from b.c import *
但__init__.py
中没有b
,我不会理解它是如何成功的。
目录结构如下所示:
a.py
b
c.py
即使文件夹from b.c import *
中没有a.py
,__init__.py
中也可以b
吗?
答案 0 :(得分:1)
由于PYTHONPATH
的构造方式,这在Python 2.7中是不可能的。有关出色的解释,请参阅this question。
然而在python中没有什么是不可能的......
感谢PEP 420: Implicit Namespace Packages:这在Python 3.3及更高版本中确实是可行的。
__init__.py
文件现在是名称空间包的可选文件:
a.py
b/
c.py
<强> B / c.py 强>
def hello_world():
print("Hello World!")
<强> a.py 强>
from b.c import *
hello_world
然后:
>>> import a
Hello World!
有关命名空间包与常规包的注意事项的更多信息,请参阅PEP和David Beazley的精彩演讲 Modules and Packages: Live and Let Die!