用Python导入包,属性错误

时间:2017-07-30 13:52:47

标签: python import package attributeerror

我是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.py
import package

在解释器中输入上面的命令后,我可以通过编写

来访问module1.py的任何功能。
package.subpackage1.module1.mod1()

其中mod1()是module1.py中定义的函数。 但是当我输入

package.module2.mod2()

我得到“AttributeError:module'package'没有属性'module2'”(mod2()是module2.py中定义的函数)。 这是为什么? 提前谢谢!

1 个答案:

答案 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