【问题标题】:Optionally exclude some dependencies when `pip install`ingpip install 时可以选择排除一些依赖项
【发布时间】:2023-12-11 18:06:01
【问题描述】:

setuptools 提供了一种常用的方法来指定可选的依赖关系 extras_require。有没有办法做相反的事情?也就是说,有

pip install mypackage

安装一整套依赖,但要有类似的东西

pip install mypackage[core]

pip install --core-option mypackage

只安装一组有限的核心依赖项?它不必像extras_require,只是在 pip 安装中指定只需要核心依赖项的某种方式。

(对于某些包,在安装方面打破向后兼容性是一个困难的选择,尤其是当大多数用户想要所有依赖项时。然而,一些用户可能需要避免核心功能不需要的重度或损坏的依赖项。 )

【问题讨论】:

标签: python pip dependencies setuptools setup.py


【解决方案1】:

如果一个库是依赖的,这意味着你的代码需要它并且没有它就无法工作,所以我认为这是不可能的。

因此,我会在根目录中保留一个 requirements.txt 用于核心功能,并在其旁边保留一个 optional-requirements.txt

readme.md 中的简短指南一起使用pip install requirements.txt 获取核心和pip install optional-requirements.txt 获取代码运行不需要的其他内容。喜欢更好的调试。

我强烈建议您在自述文件中放入安装或未安装可选包的不同之处。

【讨论】:

  • 这不是一个坏主意——我更喜欢与pip install(甚至来自PyPI)一起工作的东西,但考虑到discussion on Python forums,听起来解决方法是唯一的选择,并且这个防止了很多手动pip install something something-else