一个setup.py管理多个项目?
我现在的 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', ...)
不过,实际上我建议你还是写两个脚本比较好。