如何使用setuptools管理多个python子项目?

如何使用setuptools管理多个python子项目?,python,package,setuptools,name-conflict,namespace-package,Python,Package,Setuptools,Name Conflict,Namespace Package,我想知道使用相同的基本包处理子项目的正确/最简单/最pythonic的方法。我们目前的文件结构如下: trunk\ proj1\setup.py company_name\__init__.py + proj1's code proj2\setup.py company_name\__init__.py + proj2's code 我们希望将名称空间company_名称保留为我们所有项目的通用名称(可能这本身是非Python的?),但是

我想知道使用相同的基本包处理子项目的正确/最简单/最pythonic的方法。我们目前的文件结构如下:

trunk\
    proj1\setup.py
          company_name\__init__.py + proj1's code
    proj2\setup.py
          company_name\__init__.py + proj2's code
我们希望将名称空间company_名称保留为我们所有项目的通用名称(可能这本身是非Python的?),但是当proj1和proj2以开发模式安装时,第一个安装的名称会被破坏。看起来,
import company\u name…
在查找哪个company\u name包时感到困惑,它抓取了第一个/最后一个/随机的包

在一个更大的python项目中通常如何处理这个问题?有没有可能在主干中使用setup.py来构建某种巨型鸡蛋来解决这个问题?我还没有在google或stack上找到任何相关信息,所以非常感谢您提供任何信息,即使只是链接


编辑:我刚刚尝试在根文件夹中添加一个setup.py

...    
namespace_packages = ['company_name'],
package_dir = {'company_name' : ['proj1/company_name', 'proj2/company_name']}
...
使用适当的
pkg\u资源。在
\uuu init\uupy
文件中声明\u名称(\uuu名称)
,但
/setup.py bdist\u egg
仅给出:

公司名称设置命令中出错:发行版不包含命名空间包“公司名称”的模块或包


虽然我不能保证我的解决方案的pythonity性,但我最终还是让不同的应用程序一起运行。我使用名称空间包的方法是正确的,但是我没有尝试在主干中有一个超级项目,而是在每个项目的setup.py中添加了
namespace\u packages
行。这导致在一起安装时行为正常,按预期共享
公司名称
命名空间


任何想插嘴这是否是一个合理的python解决方案的人,我仍然有兴趣听到这是否是“它的工作方式”。感觉不错,但这可能是因为它模仿了我更习惯的java风格。

这就是我设计的
namespace\u包
关键字,我的公司开始使用名称空间包,结果是一个巨大的错误,很多功能都被破坏了,这在正常项目中是可用的(运行单元测试,安装很挑剔,等等)。只是一个警告。