2017-07-30 77 views
1

我是Python中的新手,我想了解包和导入语句是如何工作的。 我做了这个包,位于我的桌面:在Python中导入包,属性错误

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") 

和内部__初始化__的.py在subpackage1文件夹:

__ all __ =["module1"] 

我想只写

导入module1.py和module2.py

通过写

package.subpackage1.module1.mod1() 

其中MOD1()是在module1.py定义的函数输入命令上述到解释我可以没有问题module1.py的任何功能访问之后。 但是,当I型

package.module2.mod2() 

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

回答

0

由于您尚未导入__init__.py文件中的module2,您将获得AttributeError

您不应该在__init__.py中使用os.chdir()来导入子模块。

这就是我该怎么做的。

__ init包_目录中的__.py。

from . import module2 
from . import subpackage 

__ init在package目录中的__.py。

from . import module1 
+0

谢谢,但那么如果允许命令“import some_package”,如果它基本上什么都不做,什么目的呢? (假设__ init __ .py为空) –

+0

@LeonardoMutti我不明白。你是什​​么意思? –

+0

让我们考虑一下上面提到的包结构,假设__init __ .py是一个空白文件。如果我输入“import package”,命令的效果是什么? –