python 导入自定义模块报 ModuleNotFoundError: No module named 'XXX'问题处理

技术 置顶 精帖
0 1,277
peng49
peng49 2022-05-21 16:23:34
 

import导入本质

通常情况下,当使用 import 语句导入模块后,Python 会按照以下顺序查找指定的模块文件:

  • 在当前目录,即当前执行的程序文件所在目录下查找;
  • 到 PYTHONPATH(环境变量)下的每个目录中查找;
  • 到 Python 默认的安装目录下查找。

以上所有涉及到的目录,都保存在标准模块 sys 的 sys.path 变量中,通过此变量我们可以看到指定程序文件支持查找的所有目录。换句话说,如果要导入的模块没有存储在 sys.path 显示的目录中,那么导入该模块并运行程序时,Python 解释器就会抛出 ModuleNotFoundError(未找到模块)异常。

解决方式

针对于上述三种查找模块的方式,对应的给出三种解决方案:

方案一: 向 sys.path 中临时添加模块文件存储位置的完整路径
  1. # 需要查找的路径
  2. p = os.path.abspath(os.path.dirname(__file__)+'/../..')
  3. # 将路径加入到sys.path中
  4. sys.path.append(p)
方案二: 将模块放在 sys.path 变量中已包含的模块加载路径中

打印出sys.path的值,将要使用的模块放到其中的一个目录下即可

方案三: 设置 PYTHONPATH 系统环境变量

配置环境变量大家就比较熟了,不详细描述了,通常通过PyCharm执行时会在运行时默认设置这个值

参考链接
解决模块导入ModuleNotFoundError: No module named ‘XXX’的问题

回帖
登录
忘记密码?