一个setup.py管理多个项目?

14 投票
1 回答
7816 浏览
提问于 2025-04-15 11:11

我现在的 setup.py 文件(使用 setuptools)安装了两个东西,一个是 tvdb_api(一个 API 封装),另一个是 tvnamer(一个命令行脚本)

我希望能把这两个东西分开,让用户可以选择...

easy_install tvdb_api

...只安装 API 封装,或者...

easy_install tvnamer

...安装 tvnamer(同时也安装 tvdb_api,作为依赖)

这样做是否可能,而不需要两个单独的 setup.py 文件?能不能通过同一个 python setup.py upload 命令,创建两个不同的 PyPi 包呢?

1 个回答

12

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', ...)

不过,实际上我建议你还是写两个脚本比较好。

撰写回答