如何使用公共名称空间前缀创建2个python包

时间:2017-02-01 16:14:28

标签: python python-3.x pip

我可以使用2个解耦的python包,其中命名空间的第一部分是相同的:

pyPackageOne:

package_one
|
|-companyname
    |
    |-__init__py
    |-moduleone
        |
        |-__init__.py
        |-dostuff.py

pyPackageTwo:

package_two
|
|-companyname
    |
    |-__init__py
    |-moduletwo
        |
        |-__init__.py
        |-dothings.py

所以companyname是名称中的共享前缀?

我希望能够安装和使用这两个软件包:

$ pip install moduleone
$ pip install moduletwo
>>> from companyname.moduleone import dostuff
>>> from companyname.moduletwo import dothings

我正在使用python 3.6

1 个答案:

答案 0 :(得分:0)

正如Pax0r在评论中所说,我原来的结构是有效的。 看到我的最小例子:

https://github.com/omerholz/pymoduleone

https://github.com/omerholz/pymoduletwo

此策略失败的地方是我尝试在另一个包中使用一个包时:例如dothings.py包括:from companyname.moduleone import dostuff 我们会得到ModuleNotFoundError: No module named 'companyname.moduleone'