假设您创建了一个名为app
的Python程序包,它包含一个名为foo
的模块,该模块具有一个名为say_hello
的功能,该功能将Hello!
打印到控制台。何时需要修改Python __init__文件?
假设您还创建了第二个名为boss_app
的Python程序包,该程序包有一个模块main
。 app
和boss_app
位于相同的目录中,并且该目录位于Python路径中。此外,__init__
文件全部为空。其结构是:
app
__init__.py
foo.py
boss_app
__init__.py
main.py
我想导入到app
这样boss_app.main
我可以调用app.foo.say_hello
。
我使用这个命令:
import app
app.foo.say_hello()
,我希望在控制台中看到:
>>>> Hello!
相反,我得到的行为是app
进口但它没有访问foo
。
我想出了解决的办法是修改app.__init__
,使其包含以下命令:
from .foo import *
现在,我得到预期的行为。
是否总是需要创建一个自定义__init__
的包,如果该包将被从外面包进口?
如果你想具体'进口app.foo'才可以使用'app.foo.say_hello()',那么它完全没有离开'__init __。py'空。因此,您真的可以选择与您想要的命名空间相比多少便利。 – Evert
但是,如果我想'导入应用程序'并有权访问它的名称空间,那么我必须修改'__init__'的权利? –
推荐阅读:https://docs.python.org/3/tutorial/modules.html – jonrsharpe