同一根目录下多Python模块导入报错问题求助
问题原因与解决方案
问题根源
你导入的module1.submodule1是包对象,而非其中的pyfile1模块。Python的包不会自动加载目录下的所有模块,因此直接通过包对象访问内部模块会触发"没有该属性"的错误。
两种可行解决方案
方案1:直接导入目标模块
修改main.py的导入语句,直接指向pyfile1模块:
# 方式一:直接导入模块 from module1.submodule1 import pyfile1 if __name__ == '__main__': pyfile1.test1() # 或者方式二:别名导入 import module1.submodule1.pyfile1 as pf if __name__ == '__main__': pf.test1()
方案2:通过包的__init__.py显式导出模块
在module1/submodule1/目录下创建__init__.py文件,添加以下内容:
# 从当前包导入pyfile1模块,使其成为submodule1包的属性 from . import pyfile1
这样当你导入module1.submodule1时,pyfile1会被自动加载,原有的代码就能正常运行。
注意事项
确保你是在RootFolder目录下执行命令python -m module1.main,此时Python会自动将RootFolder加入模块搜索路径,才能正确识别module1作为顶层包。
内容的提问来源于stack exchange,提问作者bAN
相关产品推荐
相关产品推荐

