我有一个具有这种结构的python包:
package/
__init__.py
subA/
__init__.py
A.py
subB/
__init__.py
B.py
在package/__init__.py
中我添加了两个陈述:
import subA
import subB
我想要实现的是能够使用import package
导入整个包,并且能够使用package.aubA
和package.subB
。
它有效,但我不能只加载package.subA
。如果我使用import package.subA
,则导入package.subB
。如果我使用import package.subA as sA
,那么只有sA可用。
这是正常行为,还是我做错了什么?
如何选择使用import package
导入所有语句或仅导入单个子包而不加载所有其他语句?
答案 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']