如何用setuptools管理几个Python子项目?
-
01-10-2019 - |
题
我想知道正确/最简单/大多数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风格。
不隶属于 StackOverflow