假设在python路径中,我有一个名称空间 foo .我有一个单独目录中的模块(不在python路径中),名为 bar 以下内容: x.py 我是说, y.py 我是说, z.py 是的。所以布局可能是这样的:
foo
bar
x.py
y.py
z.py
|--/python/path/site-packages/foo/ |----__init.py__ |--... |--/some/other/directory/bar/ |----__init__.py |----x.py |----y.py |----z.py
所以,既然foo已经在我的路上了,我很容易做到 import foo 是的。不过,有什么黑色魔法我可以加进去吗 foo/__init__.py 所以在我的python shell中,我可以开始 from foo import x 或 from foo.x import my_function 是吗?理想的情况是寻找一个同时适用于Python2.7和Python3.6的解决方案,但这并不严格。
import foo
foo/__init__.py
from foo import x
from foo.x import my_function
编辑:我想补充一下 bar/ 在理想情况下,也可以有子文件夹或子包。
bar/
忘了我在这里问过这个问题,但是,万一有人到这里来,这就是我最后要做的。
# /python/path/site-packages/foo/__init__.py __path__.append("/some/other/directory/bar/")
这个 __path__ 对于特定的名称空间,告诉python名称空间应该查看哪些目录。
__path__