一个 setup.py 中的多个项目?

发布于 2024-07-17 14:35:07 字数 523 浏览 4 评论 0原文

我当前的 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 包吗?

My current setup.py (using setuptools) installs two things, one is tvdb_api (an API wrapper), the other is tvnamer (a command line script)

I wish to make the two available separately, so a user can do..

easy_install tvdb_api

..to only get the API wrapper, or..

easy_install tvnamer

..to install tvnamer (and tvdb_api, as a requirement)

Is this possible without having two separate setup.py scripts? Can you have two separate PyPi packages that come from the same python setup.py upload command..?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

与君绝 2024-07-24 14:35:07

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

但实际上,我' d 建议只编写两个脚本。

setup.py is just a regular Python file, which by convention sets up packages. By convention, setup.py contains a call to the setuptools or distutils setup() function. If you want to use one setup.py for two packages, you can call a different setup() function based on a command-line argument:

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

Practically, though, I'd recommend just writing two scripts.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文