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 ‘模块名’。

二、解决方法

  1. 临时向sys.path中添加我们所写的模块文件的完整路径,放在文件中的第一行,但是这种方法只是临时的,关闭窗口之后就会失效。
import sys
sys.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 异常。
    添加到环境变量中的用户变量中去,仅对当前登录用户有效即可。

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

记录一下

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

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

  1. python 爬虫 数据抓取的三种方式

    python 爬虫   数据抓取的三种方式 常用抽取网页数据的方式有三种:正则表达式.Beautiful Soup.lxml 1.正则表达式 正则表达式有个很大的缺点是难以构造.可读性差.不易适用未来 ...

  2. Python 高等数学应用 求导数的三种方式

    Python 高等数学应用 求导数的三种方式 方式一 使用SymPy的diff 函数, 可以得到函数的导数表达式,给出数学表达式里的数学符号描述符 本例使用了此方法 方式二 使用spicy.misc模 ...

  3. 命令行运行Python脚本时传入参数的三种方式

    三种常用的方式 如果在运行python脚本时需要传入一些参数,例如gpus与batch_size,可以使用如下三种方式. python script.py 0,1,2 10 python script ...

  4. 在python里调用C函数的三种方式

    一个python项目快速开发完以后,常常针对瓶颈进行优化,其中一种方式就是对于性能至关重要的部分,使用C重写,这已经是一种最佳实践.如果整个项目完全使用C,开发效率就没有保障.python运行环境(C ...

  5. python基础,变量,常量,python内置管理,列表,解压缩,python与用户交互,格式化输出的三种方式

    文章目录 1.花式赋值有两种方式 1.1链式赋值 1.2 交叉赋值(python独有) 2. 列表 [] 列表: 用途: 作用: 定义方式, 3.使用方法 set 字典 dict {} 作用: 定义方 ...

  6. python 图片和二进制转换的三种方式

    PIL格式转二进制 先读取为PIL格式,再转为二进制 import io import base64 from PIL import Imagedef image2byte(image):'''图片转 ...

  7. 解决导入curses包的时候出现ModuleNotFoundError: No module named ‘_curses‘的问题

    写py脚本时,需要用到curses库(提供了控制字符屏幕的独立于终端的方法). 导入是正常, 运行时报错:ModuleNotFoundError: No module named '_curses' ...

  8. python函数调用的三种方式_判断python对象是否可调用的三种方式及其区别

    基本上判断python对象是否为可调用的函数,有三种方法: 1.使用内置的callable函数 callable(func) 用于检查对象是否可调用,返回True也可能调用失败,但是返回False一定 ...

  9. python 获取本机IP的三种方式

    python获取本机IP的方式 第一种: #!/usr/bin/python import socket import fcntl import struct def get_ip_address(i ...

最新文章

  1. Cassandra读写性能测试
  2. ​CPU将进入新时代:押注计算芯片的极限协同设计
  3. python过滤后缀
  4. Spring MVC-07循序渐进之验证器 下 (JSR 303验证)
  5. DataGrid内容的导出
  6. Ubuntu20.04 安装VMware Tools
  7. ansible 学习笔记
  8. c语言字符指针初始化赋值,C语言_指针变量的赋值与运算,很详细详解
  9. Apollo自动驾驶入门课程第⑧讲 — 规划(下)
  10. 两个单链表相交的一系列问题----0_0
  11. 安卓巴士诚招版主,希望各位巴友踊跃加入我们!
  12. 软件测试nextdata函数决策表,软件测试NextDate函数决策表测试法实验报告
  13. BeautifulSoup([your markup]) to this: BeautifulSoup([your markup], lxml) 解决未设置默认解析器的错误...
  14. 虚拟化存储解决方案需要确定的三件事
  15. 【amp;#9733;】SPF(Dijkstra)算法完美教程
  16. 超图iServer rest服务之最佳路径分析
  17. TI am335x系列(am3352)LCD驱动修改移植
  18. hadoop大数据平台搭建
  19. SHoj 420 购买装备
  20. 汇编语言(Assembly Language)简介

热门文章

  1. <数据结构>时间复杂度及空间复杂度
  2. SpringBoot整合Druid数据源页面访问报该页面无法正常运作
  3. 也玩MF,雅典娜4 SPI 接口驱动Nokia 5110 LCD
  4. java连接数据库12514,数据库初始化失败,报错ORA-12514
  5. note_44:事件分发
  6. error: C2664: “ 无法将参数 1 从“QMap<int,MyData>”转换为“QMap<int,从“QMap<int,MyData>”转>”
  7. 生日相同c语言结构体,生日相同(结构体)
  8. html5插入animate动画
  9. 你们是怎么自学编程的?我是这么自学的,现在月薪1.8万
  10. namenode和datanode工作机制_HDFS详解一:namenode、datanode工作原理