我想知道正确/最简单/大多数Pythonic处理您想要使用相同基本软件包的子标题的方法。我们目前有这样的文件结构:

trunk\
    proj1\setup.py
          company_name\__init__.py + proj1's code
    proj2\setup.py
          company_name\__init__.py + proj2's code

我们要保留所有项目的命名空间company_name(也许这本身是Unpythonic?),但是当ProJ1和ProJ2安装在开发模式下时,第一个安装的设备被打破了。看起来像 import company_name... 对要查看哪个Company_name软件包感到困惑,并抓住第一个/最后/随机的包装。

通常如何在较大的Python项目中处理这?是否可以在构建某种Mega-Egg的行李箱中使用设置。Py解决此问题?我没有在Google或stack上找到任何相关信息,因此,即使仅仅链接也非常感谢!


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

...    
namespace_packages = ['company_name'],
package_dir = {'company_name' : ['proj1/company_name', 'proj2/company_name']}
...

适当 pkg_resources.declare_namespace(__name__) 在里面 __init_.py 文件,但是 ./setup.py bdist_egg 只是给出:

company_name设置中的错误命令:分发包含命名空间软件包'company_name'的模块或软件包

有帮助吗?

解决方案

虽然我无法保证解决方案的pythonity,但我终于可以使不同的应用程序合并在一起。我的命名空间软件包在正确的轨道上 namespace_packages 在每个项目的设置中行。这导致安装在一起时的行为正常,共享 company_name 命名空间按预期。

任何想加入这一问题的人都是一个合理的python解决方案,我仍然有兴趣听到这是否是“完成的方式”。感觉很不错,但这可能是因为它模仿了我更习惯的Java风格。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top