Python导入自定义模块ImportError: No module named 'xxx'问题

Python导入自定义模块ImportError: No module named 'xxx'问题

文章目录

  • 问题描述
  • 问题分析
  • 模块名冲突
    • import 工作原理
    • 分析原因
  • 路径错误

问题描述

python在导入自定义模块的时候(类、函数所有以.py结尾的文件), 出现"ImportError: No module named ‘xxx’"问题.

问题分析

由于导入的是自定义模块, 主要是有两种原因. 一个是自定义的模块名和python模块库里缓存的模块名重复了.另一个可能的原因是, 相对路径和绝对路径的原因.

模块名冲突

import 工作原理

  1. Python首先查找sys.modules中的模块名称。这是预先导入的所有模块的缓存。

  2. 如果在模块缓存中没有找到该名称,Python将通过内置模块列表进行搜索。这些模块是和Python一起预先安装的,并且可以在Python标准库中找到。

  3. 如果在内置模块中仍没有找到该名称,那么Python在sys.path定义的目录列表中搜索它。此列表通常包括当前目录,首先搜索该目录.

分析原因

如果sys.modules或者Python标准库中已经存在和自定义模块同名的模块, 则不会走到第三步.如果系统模块没有要引入的方法的话,就出出先该错误.

执行:pip3 list 查看一下时候有和自定义模块同名的

解决方案:修改自定义模块名

路径错误

系统路径当中并不存在该路径,可以执行以下代码查看以下:

import sys
print(sys.path)

Python会安装打印的路径一个个查找该路径下,是否有该模块.可以在 import 语句前加入以下代码,把相对路径加入到系统路径列表中

import sys
sys.path.append("..")

(注意;一个".“表示当前路径, 两个”…"表示当前路径的上一层路径)

你可能感兴趣的:(Python,python)