【问题标题】:Multiple distributions from one source tree来自一个源树的多个分布
【发布时间】:2018-08-01 09:47:17
【问题描述】:

我有一个看起来像这样的源代码树:

/app/backend/module.py
/app/cli/module.py
/app/common/module.py

现在我想构建三个包,app-backendapp-cliapp-common,它们应该是可分发的并且可以单独使用。 我想将代码保存在一个存储库中,因为我想把所有东西放在一起,而且代码还不是很多。

使用 setuptools 执行此操作的最标准和最适合未来的方法是什么(或者有更好的方法)?我不是为 Python 2.7 等构建的,如果它只适用于最新的工具,我会很好。

【问题讨论】:

    标签: python python-3.x setuptools python-packaging


    【解决方案1】:

    我不知道你可以在一个 setup.py 中使用多个 setup(...) 调用

    你不能,这是无效的。请参阅以下位置的文档: https://python-packaging.readthedocs.io/en/latest/minimal.html

    “主设置配置文件 setup.py 应包含对 setuptools.setup() 的单个调用”

    虽然 setuptools 最初没有抱怨,但当您尝试上传或安装软件包时就会出现问题;一个包元数据泄漏到后面。

    【讨论】:

      【解决方案2】:

      您可以在一个 setup.py 脚本中拥有多个 setup() 命令

      在这种情况下,您可以有一个 /app/setup.py 脚本

      from setuptools import setup, find_packages
      
      version = '1.0.0'
      
      setup(
          name='app-backend',
          version=version,
          packages=find_packages(exclude=['cli', 'common']),
      )
      
      setup(
          name='app-cli',
          version=version,
          packages=find_packages(exclude=['backend', 'common']),
      )
      
      setup(
          name='app-common',
          version=version,
          packages=find_packages(exclude=['backend', 'cl']),
      )
      

      运行 python setup.py COMMAND 将构建/安装/打包所有三个 python 包

      【讨论】:

      • 我不知道您可以在一个 setup.py 中使用多个 setup(…) 调用 - 您可以提供文档链接吗?我根据您的回答实现了一个解决方案,其中包含多个可以单独使用的 setup.py 文件,以及基本目录中的 setup.py,通过 runpy 模块中的 run_path 使用其他文件。
      猜你喜欢
      • 1970-01-01
      • 2019-01-17
      • 1970-01-01
      • 2019-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-28
      • 1970-01-01
      相关资源
      最近更新 更多