我是Python的新手,我正在尝试理解包和import语句的工作原理。 我制作了这个包,位于我的桌面:
package/
__ init __.py
module2.py
subpackage1/
__ init __.py
module1.py
这是包文件夹中__ init __ .py的内容:
__ all __ =["module2"]
import os
os.chdir("C:/Users/Leo--/Desktop/Package")
import subpackage1.module1
os.chdir("C:/Users/Leo--/Desktop")
和subpackage1文件夹中的__ init __ .py:
__ all __ =["module1"]
我想仅通过编写
来导入module1.py和module2.pyimport package
在解释器中输入上面的命令后,我可以通过编写
来访问module1.py的任何功能。package.subpackage1.module1.mod1()
其中mod1()是module1.py中定义的函数。 但是当我输入
package.module2.mod2()
我得到“AttributeError:module'package'没有属性'module2'”(mod2()是module2.py中定义的函数)。 这是为什么? 提前谢谢!
答案 0 :(得分:0)
您获得了AttributeError
,因为您尚未在module2
文件中导入__init__.py
。
您不应该os.chdir()
__init__.py
导入子模块。
我就是这样做的:
__ init __.py
目录中的 package
。
from . import module2
from . import subpackage
__ init __.py
目录中的 subpackage1
。
from . import module1