gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 21:01:51 24 4
gpt4 key购买 nike

我想知道处理您希望使用相同基础包的子项目的正确/最简单/最 pythonic 方式。我们目前有这样的文件结构:

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

我们希望保留我们所有项目通用的命名空间 company_name(也许这本身是非 pythonic 的?)但是当 proj1 和 proj2 在开发模式下安装时,第一个安装的会损坏。看起来 import company_name... 对要查看哪个 company_name 包感到困惑,它捕获了第一个/最后一个/随机的。

在大型 Python 项目中通常如何处理?是否可以通过构建某种巨蛋的主干中的 setup.py 来解决此问题?我没有在谷歌或堆栈上找到任何相关信息,因此非常感谢任何信息,即使只是链接!


编辑:我只是尝试在根文件夹中添加一个 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 只是给出:

error in company_name setup command: Distribution contains no modules or packages for namespace package 'company_name'

最佳答案

虽然我不能保证我的解决方案的 pythonity,但我最终确实让不同的应用程序正常运行。我在命名空间包方面走在了正确的轨道上,但我没有尝试在主干中拥有一个 super 项目,而是在每个单独项目的 setup.py 中添加了 namespace_packages 行。这导致安装在一起时表现正常,按预期共享 company_name 命名空间。

任何想插话这是否是一个合理的 python 解决方案的人,我仍然很想知道这是否是“完成方式”。感觉不错,但这可能是因为它模仿了我更习惯的 java 风格。

关于python - 如何使用 setuptools 管理多个 python 子项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3574799/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com