【Python问题】Python 导入模块的三种方式ModuleNotFoundError: No module named ‘模块名‘

Python 导入模块的三种方式ModuleNotFoundError: No module named '模块名'

  • 问题
  • 一、Python解释器查找模块文件的过程。
  • 二、解决方法
  • 记录一下


大家可以参考这个文档的解释很清楚:python导入模块的三种方式超详细http://c.biancheng.net/view/4645.html

问题

写程序import 我们写好的模块的时候经常会遇到ModuleNotFoundError: No module named ‘模块名’。
这个是因为python找不到相应的模块名。


一、Python解释器查找模块文件的过程。

当我们import导入模块时,Python会按照以下顺序查找指定的模块文件。

  1. 寻找当前目录,也就是当前执行的程序文件所在的目录下查找。
  2. 如果上一步没有查找到,到环境变量下的每个目录中目录;
  3. 到python默认的安装目录下查找
    这些都会保存到模块sys的sys.path变量中,我们需要保证我们要导入的文件的模块存储到sys.path中,如果没有的话就会报错ModuleNotFoundError: No module named ‘模块名’。
    sys模块中保存的路径

二、解决方法

  1. 临时向sys.path中添加我们所写的模块文件的完整路径,放在文件中的第一行,但是这种方法只是临时的,关闭窗口之后就会失效。
import sys
sys.path.append("文件的完整路径")

图片中红色的就是我们添加进入的路径
在这里插入图片描述

  1. 将模块放在sys.path变量中已包含的模块加载路径中;注释部分都是python的默认模块的加载路径,我们可以将我们所用的保存到这些默认路径中,可以让所有程序共享。
    将我们的文件放到lib\site-packages路径下,就相当于扩展了一个模块。
/*
['', 'D:\\Anaconda3\\python37.zip', 'D:\\Anaconda3\\DLLs','D:\\Anaconda3\\lib', 'D:\\Anaconda3', 
'C:\\Users\\Jane\\AppData\\Roaming\\Python\\Python37\\site-packages','D:\\Anaconda3\\lib\\site-packages', 
'D:\\Anaconda3\\lib\\site-packages\\win32', 
'D:\\Anaconda3\\lib\\site-packages\\win32\\lib', 
'D:\\Anaconda3\\lib\\site-packages\\Pythonwin'
*/
  1. 设置path系统环境变量
    直接将路径配置到环境变量里面去,python解释器就会按照path的路径来进行搜索,找到指定的模块,如果没找到就会报ModuleNotFoundError 异常。
    添加到环境变量中的用户变量中去,仅对当前登录用户有效即可。
    新建PYTHONPATH环境变量

对于变量值的学习解释:
.;d:\python_ module 以分号分隔为两个路径
第一个路径(.)只有一个点,表示当前路径,当运行Python程序时,Python将可以从当前路径中来读取模块
第二个路径为(d:\python_ module),表示当运行Python程序时,python可以从d:\python_ module中加载模块。

记录一下

对于普通用户来说,设置用户path变量和系统变量path变量的效果是一样的,Python在使用path变量时,会先按照系统path变量的路径去查找,然后在按照用户变量的路径去查找。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/255338.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

python怎么导入数学模块_python怎么导入模块

python中的模块即.py文件,模块的导入方式通常有两种:1是直接使用import语句导入;2是使用from..import..结构引入。 使用 import 导入模块的语法,但实际上 import 还有更多详细的用法,主要有以下两种:import 模块名1 [as 别名1], 模块名2 [as 别名2],…: 导入整个模块。…

python如何导入模块中的类_python导入模块中类的方法

自定义标题 python导入模块中类的方法 1、导入模块中的单类 2、一个模块中存储多个类时导入的方法 3、导入模块中所有类的方法 4、导入模块中的类时把类使用as取一个别名 python导入模块中类的方法 1、导入模块中的单类 》创建模块 #file:person.py class Person(): def __init…

python之模块导入及模块导入路径

一、从模块导入对象 1、import 模块名 [as 别名]。 也可以一次导入多个模块,多个模块之间用逗号隔开 (1)导入格式: import 模块名 [as 别名] (2)使用方法:使用时要在对象前面加上模块名作为前…

python无法导入模块_python导入模块失败的原因是什么

py执行文件和模块同属于同个目录(父级目录),才能直接import模块:如果不在同一目录,可以在python环境下使用sys.path.append(path)添加相关的路径,但在退出python环境后自己添加的路径就会自动消失! 模块 1、模块的定义: 为了编写可维护的代码,我们把很多函数分组,…

测绘——AutoCAD教育版打印戳去除

我们在使用CAD和Cass进行画图的时候,有时会参照一些老图,一些老图数据是使用教育版CAD绘制的,复制或插入均会导致我们的数据在每次打开是都会提醒检测到教育版打印戳记 (Fig. 1),以及在打印时也会看到。当我…

AutoCAD LT 2022下载及教程

资源地址:AutoCAD LT 2022 Autodesk AutoCAD LT 2022是一款功能强大的专业计算机辅助软件,有了该软件用户可以更快更精准的创建2D模型,该软件拥有完整的2D命令并允许用户创建工程图,对其进行修改并发布项目的工作文件。同时还提供…

教育版AutoCAD下载开启,你知道吗?

你知道,学生和教师可以免费获取AutoCAD吗?只要符合条件,学生和教师就可免费获得 Autodesk 产品和服务的一年期教育版访问权限。那你知道该如何获取和下载吗? 以下就是教育版AutoCAD下载需要注意的事项,本篇将会从安装…

国产在线三维云CAD:CrownCAD (在线建模CAD软件)

云CAD就是在线建模CAD软件,即打开浏览器就可以进行建模的软件。云CAD可以部署在公有云,也可以部署在私有云。 尤其是可以在国产芯片和国产操作系统上运行,所以非常适合于自主可控要求高的领域。具备云存储、云计算、多终端、多人协同设计等优…

【去除教育】去除打印教育戳记插件

添加公众号:“第一设计群” 去教育打印戳记插件 去除教育版戳记插件,可以避免在打印时候图纸出现这个戳记,对图纸造成一些美观的影响。相信很多朋友都遇到过这个问题: 使用方法 1、下载插件到电脑任意位置 2、打开CAD、新建空白文…

【Windows驱动篇】解决Windows驱动更新导致AMD Software软件无法正常启动问题

【Windows驱动篇】解决Windows驱动更新导致AMD Software软件无法正常启动问题 【操作前先备份好电脑数据!!!设置系统还原点等,防止系统出现问题!!!谨慎请操作!】 【操作前先备份好…

原创:CAD批量去除教育版戳记

批量去教育版戳记网上给出的方法及搜索到的软件基本都不能用,最好的方法是,把 DWG 文件转换为 DXF 文件,后再转换回来。所以首先我们需要把 DWG 文件转换为 DWF 文件,步骤如下 1.下载Acme CAD Converter,完成后打开&am…

CAD插件学习系列教程(七) 去除CAD教育版戳记 (两种方法)

AutoCAD分为商业版和教育版两个版本,教育版为防止图纸作作商业用途,在打印CAD图纸的时候,会添加教育版戳记。 打开有CAD教育版戳记的图纸,打开的时候会出现“此图形将显示一则消息‘由Autodesk教育版产品生成’。是否继续&#x…

什么是IPAM?如何使用IPAM来管理IP地址和DHCP?

在计算机网络中,IPAM(IP Address Management)是一种用于管理IP地址和DHCP(Dynamic Host Configuration Protocol)的工具或系统。IPAM旨在简化和集中管理IP地址分配、子网划分和DHCP配置等任务。本文将详细介绍IPAM的概…

新手快速学会使用DDL对数据库和表的操作

前言 SQL是一种操作关系型数据库的结构化查询语言。今天这篇文章将详细讲述数据定义语言DDL对数据库和表的相关操作。 文章目录 前言1. DDL-操作数据库1.1 查询1.2 创建数据库1.3 删除数据库1.4 使用数据库2.1 数据类型2.2 查询表2.3 创建表2.4 删除表2.5 修改表 3. 实战案例详…

统计学的假设检验/置信区间计算

假设检验的核心其实就是反证法。反证法是数学中的一个概念,就是你要证明一个结论是正确的,那么先假设这个结论是错误的,然后以这个结论是错误的为前提条件进行推理,推理出来的结果与假设条件矛盾,这个时候就说明这个假…

chatgpt赋能python:Python中符号的用法

Python中符号的用法 在Python编程中,符号是非常重要的一部分。通过合理使用符号,我们可以轻松地实现许多功能和操作。下面是Python中一些常用的符号的介绍和用法。 赋值符号 斜杠等于号()被用来赋值。例如,如果我们要…

接口和抽象类和实现类的区别

Jumping 是一个接口 有抽象方法 是一个抽象的内容 public class Cat implements Jumping{ 使用多态 方法实例化 Jumping j new Cat(); j.jumping } 接口的实现类 重写接口中所有的抽象方法抽象类 注意接口中没有 成员变量 默认全部都是 常量 用final 修饰可以通过 接口…

SpringBoot项目配置mongodb多数据源以及自定义类型转换

mongodb多数据源配置,需要修改mongodb默认的yml配置文件 修改项目中的application-mongodb-dev.yml文件 spring:data:mongodb: # 第一个数据源,或默认数据源one:uri: mongodb://username:passwordip:port/collectionName # 第二个数据源two:uri: m…

3-8电路布线

问题描述 在一块电路板的上、下两端分别有n个接线柱。根据电路设计,要求用导线将上端接线柱与下端接线柱相连借用https://blog.csdn.net/LDUtyk大佬的图片 如上图所示, 上端 i 节点与下端Ω(i) 节点相连, 但是要求连线不能交叉。Ω(x)是一个…

JSP.day01.01JSP学习

JSP基础学习 01.page指令 导入包&#xff0c;指明输入内容类型&#xff0c;控制session等 02.include指令 include指令用于当前JSP中包含其他文件&#xff0c;被包含的文件可以是JSP、HTML或文本文件。 <% include file"文件的相对路径"%>03tagelib指令 t…