Python 3创建包遇ModuleNotFoundError问题求助
解决Python包导入的ModuleNotFoundError问题
嘿,我来帮你搞定这个导入报错的问题!问题其实出在你pack1/__init__.py里的导入语句逻辑上——当你在包内部写import Class1或者from Class1时,Python会触发绝对导入,它会去全局的模块搜索路径里找Class1,而不是在当前的pack1包目录下找,这就是为啥会报“找不到模块”的错。
下面给你两种简单可行的解决办法:
方法1:用相对导入(包内部引用首选)
把pack1/__init__.py的内容改成这样:
from . import Class1 # 如果需要直接导出Class1里的类/对象,再加这句(可选) from .Class1 import Class1
这里的.代表当前的pack1包目录,相当于告诉Python:“去我所在的这个包里找Class1模块”。
方法2:用绝对导入(明确指定包名)
如果你更习惯绝对路径的写法,也可以把__init__.py改成:
import pack1.Class1 from pack1.Class1 import Class1
这种写法需要保证pack1所在的目录在Python的模块搜索路径里——你的情况里main.py和pack1是同级的,运行main.py时Python会自动识别pack1作为合法包,所以完全没问题。
验证修改效果
改完__init__.py之后,你main.py里的from pack1 import Class1就能正常工作了,实例化var1 = Class1()也不会再报错啦。
最后补个小建议:如果你的Class1.py里定义的就是名为Class1的类,那直接在__init__.py里写from .Class1 import Class1会更清晰,这样在main.py里导入的就是具体的类,而不是整个模块,使用起来更直观。
内容的提问来源于stack exchange,提问作者Kanerva Peter
相关产品推荐
相关产品推荐

