【发布时间】:2011-04-04 05:44:43
【问题描述】:
我想知道正确/最简单/最 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 项目中,这通常会如何处理?是否可以通过在后备箱中构建某种巨型鸡蛋的 setup.py 来解决此问题?我没有在 google 或 stack 上找到任何相关信息,因此非常感谢任何信息,即使只是链接!
编辑:我只是尝试在根文件夹中添加一个 setup.py
...
namespace_packages = ['company_name'],
package_dir = {'company_name' : ['proj1/company_name', 'proj2/company_name']}
...
在__init_.py 文件中使用适当的pkg_resources.declare_namespace(__name__),但./setup.py bdist_egg 只是给出:
company_name 设置命令中的错误:分发包不包含命名空间包“company_name”的模块或包
【问题讨论】:
标签: python package setuptools name-conflict namespace-package