Python新手导入自制transaction模块报ModuleNotFoundError问题
自定义模块导入
ModuleNotFoundError逐点排查 - 先核实文件的真实完整名称
这是新手最高发的踩坑点:Windows、macOS默认隐藏已知类型文件的扩展名,你看似把文本文件重命名成transaction.py,实际的完整文件名是transaction.py.txt。这种文件对Python来说就是纯文本,根本不会被识别为可导入的模块。
解决时先打开系统的文件扩展名显示开关,确认文件全称确实是transaction.py,没有藏着多余的后缀。 - 核对Python解释器的模块搜索路径,别默认“Python主目录”就是搜索范围
Python导入模块时,第一优先级的搜索位置是你当前启动终端、运行python命令时所在的工作目录,不是Python本身的安装根目录。
比如你把transaction.py存在Python安装的根目录下,但你开终端的时候是直接进入了桌面文件夹,在这个路径下运行导入语句,解释器根本不会跑到Python安装目录找文件,必然触发找不到模块的报错。
验证方法:在当前报导入错的Python交互环境里执行两行代码,直接打印所有会被搜索的路径:
如果输出的路径列表里,没有存放import sys print(sys.path)transaction.py的那个文件夹路径,就是路径不匹配导致的报错。 - 通用注意事项
不要给自定义模块起和Python内置标准库完全重名的名字(比如os.py、math.py),这种情况哪怕路径对了,也可能因为导入优先级逻辑出现运行异常。
内容的提问来源于stack exchange,提问作者IMQ
相关产品推荐
相关产品推荐

