python在导入自定义模块的时候(类、函数所有以.py结尾的文件), 出现"ImportError: No module named ‘xxx’"问题.
由于导入的是自定义模块, 主要是有两种原因. 一个是自定义的模块名和python模块库里缓存的模块名重复了.另一个可能的原因是, 相对路径和绝对路径的原因.
Python首先查找sys.modules中的模块名称。这是预先导入的所有模块的缓存。
如果在模块缓存中没有找到该名称,Python将通过内置模块列表进行搜索。这些模块是和Python一起预先安装的,并且可以在Python标准库中找到。
如果在内置模块中仍没有找到该名称,那么Python在sys.path定义的目录列表中搜索它。此列表通常包括当前目录,首先搜索该目录.
如果sys.modules或者Python标准库中已经存在和自定义模块同名的模块, 则不会走到第三步.如果系统模块没有要引入的方法的话,就出出先该错误.
执行:pip3 list 查看一下时候有和自定义模块同名的
解决方案:修改自定义模块名
系统路径当中并不存在该路径,可以执行以下代码查看以下:
import sys
print(sys.path)
Python会安装打印的路径一个个查找该路径下,是否有该模块.可以在 import 语句前加入以下代码,把相对路径加入到系统路径列表中
import sys
sys.path.append("..")
(注意;一个".“表示当前路径, 两个”…"表示当前路径的上一层路径)