如何从python中没有__init__.py的文件夹导入文件?

时间:2015-10-30 15:14:55

标签: python import pythonpath

enter image description here 我看到了这种格式的代码:

from b.c import *

__init__.py中没有b,我不会理解它是如何成功的。

目录结构如下所示:

a.py
b
    c.py

即使文件夹from b.c import *中没有a.py__init__.py中也可以b吗?

1 个答案:

答案 0 :(得分:1)

由于PYTHONPATH的构造方式,这在Python 2.7中是不可能的。有关出色的解释,请参阅this question

然而在python中没有什么是不可能的......

感谢PEP 420: Implicit Namespace Packages:这在Python 3.3及更高版本中确实是可行的。

__init__.py文件现在是名称空间包的可选文件:

在Windows上使用Python 3.5

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!