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

标签 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_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/

相关文章:

python - 如何从轮廓矢量转换为MAT?

python - 如果 pandas 数据框中另一列的值相同,我如何减去 2 列

view - SSIS - 我要找什么? "Invalid column type from bcp client for colid 1."

python - 重新打包最初通过 pip 安装的修改后的库

Python打包: build requirements in pyproject. toml VS setup_requires

python - groupby 上的 pandas concat 数组

python - 当通过命令行执行时,导入日期时间会在 Python 脚本中引发 ModuleNotFound 'math'

python - "Error occurs when install package "gmpy"在pycharm mac版本上

python - Anaconda 是否在全局站点包文件夹中搜索包?

python - 无法加载setuptools打包的dll