将 Python 个包从单独的目录插入到不同的命名空间

Insert Python Packages from Separate Directory into a different Namespace

假设在我的 Python 路径中,我有命名空间 foo。我在名为 bar 的单独目录(不在 python 路径中)中有模块:x.pyy.pyz.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 xfrom foo.x import my_function 的事情]?理想情况下寻找适用于 Python 2.7 和 Python 3.6 的解决方案,但这并不严格。

编辑:我想补充一点,在理想情况下,bar/ 也可以有子文件夹或子包。

忘了我在这里问过这个问题,但是,以防万一其他人在这里结束,这就是我最终做的。

# /python/path/site-packages/foo/__init__.py
__path__.append("/some/other/directory/bar/")

特定命名空间的 __path__ 告诉 Python 该命名空间应该查看哪些目录。