为了提供多种安装方式配置setup.py

问题描述 投票:-1回答:2

有没有什么解决方案来创建一个Python包setup.py的具体安装?

我想安装基于一些参数,这将给予点子不同的模块。

编辑

也许,我的第一条消息还不清楚,我会尝试下面一个更好的解释。

我们有一个共同的Python包,以便分享一些代码对整个公司技术工人。这个包是在私人回购协议,并通过PIP安装。

可悲的是,这个包正在成为到大,我们现在正试图安装它时所面临的一些性能问题。

我在想,如果有可能,莫名其妙地创建自定义setup.py脚本,将允许用户安装该模块的只有很小一部分,而不是整个之一。

谢谢你的帮助

python pip setup.py
2个回答
2
投票

应该有你的setup.py这样一行:

setup(
    # ...
    packages=find_packages(),
    # ...
)

解决您的问题,您需要使用此方法find_packages工作,这个功能在这个项目中返回一个列表Python包

因此该解决方案是简单的让用户args作为setup.py,并基于该返回选择find_packages

这里是一个简化的代码

if '--full' in sys.argv:
    packages = find_packages()
elif '--only-module-a':
    packages = [p for p in find_packages() if p.startswith('a')]

setup(
    # ...
    packages=packages,
    # ...
)

PS:因为@hoefling评论这个解决方案是一个哈克,并可能造成误解的用户,你应该包分成更小的子包(你仍然可以让他们在一个回购)


0
投票

您是否尝试过使用pip freeze > requirements.txt生成已安装的所有软件包的一个文本文件,编辑您想要的文本文件,里面的包和版本,然后pip install -r requirements.txt到别的地方安装吗?

© www.soinside.com 2019 - 2024. All rights reserved.