代码之家  ›  专栏  ›  技术社区  ›  Sidd Singal

将来自不同目录的python包插入到不同的命名空间中

  •  0
  • Sidd Singal  · 技术社区  · 6 年前

    假设在python路径中,我有一个名称空间 foo .我有一个单独目录中的模块(不在python路径中),名为 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的解决方案,但这并不严格。

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

    0 回复  |  直到 6 年前
        1
  •  0
  •   Sidd Singal    5 年前

    忘了我在这里问过这个问题,但是,万一有人到这里来,这就是我最后要做的。

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

    这个 __path__ 对于特定的名称空间,告诉python名称空间应该查看哪些目录。