使用__init__.py文件导入问题Python:加载一个子包会自动导入所有其他子包

时间:2013-05-10 09:45:09

标签: python python-2.7 package

我有一个具有这种结构的python包:

package/
       __init__.py
       subA/
           __init__.py
           A.py
       subB/
           __init__.py
           B.py

package/__init__.py中我添加了两个陈述:

import subA
import subB

我想要实现的是能够使用import package导入整个包,并且能够使用package.aubApackage.subB

它有效,但我不能只加载package.subA。如果我使用import package.subA,则导入package.subB。如果我使用import package.subA as sA,那么只有sA可用。

这是正常行为,还是我做错了什么? 如何选择使用import package导入所有语句或仅导入单个子包而不加载所有其他语句?

1 个答案:

答案 0 :(得分:0)

这是正常行为。你有

import subA
import subB 

如果您在__init__.py文件中添加一些打印语句,您会更好地理解它。当您执行import package.subA之类的导入时,会导入'package'

This is package's __init__ file

This is subA's __init__ file

This is subB's __init__ file

执行print dir()也会增加清晰度。

执行import package.subA

['__builtins__', '__doc__', '__file__', '__name__', '__package__', 'package']

执行import package.subA as sA

['__builtins__', '__doc__', '__file__', '__name__', '__package__', 'sA']