【问题标题】:Multiple projects from one setup.py?来自一个 setup.py 的多个项目?
【发布时间】:2010-10-20 15:59:12
【问题描述】:

我当前的setup.py(使用setuptools)安装了两个东西,一个是tvdb_api(一个API wrapper),另一个是tvnamer(一个命令行脚本)

我希望将两者分别提供,以便用户可以这样做..

easy_install tvdb_api

..只获取 API 包装器,或者..

easy_install tvnamer

..安装 tvnamer(和 tvdb_api,作为要求)

如果没有两个单独的setup.py 脚本,这可能吗?你能有两个来自同一个python setup.py upload 命令的独立 PyPi 包吗?

【问题讨论】:

  • 两个 setup.py 脚本有什么问题?
  • 是的,这似乎是这样做的方式

标签: python setuptools


【解决方案1】:

setup.py 只是一个常规的 Python 文件,按照惯例会设置包。按照惯例,setup.py 包含对 setuptools 或 distutils setup() 函数的调用。如果你想为两个包使用一个setup.py,你可以根据命令行参数调用不同的setup()函数:

import sys
if len(sys.argv) > 1 and sys.argv[1] == 'script':
    sys.argv = [sys.argv[0]] + sys.argv[2:]
    setup(name='tvnamer', ...)
else:
    setup(name='tvdb_api', ...)

不过,实际上,我建议只编写两个脚本。

【讨论】:

  • sys.args 不存在,您的意思是sys.argv
  • @ncocacola:是的,这就是他必须吃的肉。我修正了错字。
  • 我怀疑如果没有pop-ing 第一个参数,这将无法工作。否则,IMO setup() 会将其视为设置命令行界面的参数之一。
猜你喜欢
  • 2012-02-12
  • 1970-01-01
  • 1970-01-01
  • 2016-06-15
  • 2021-12-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多