install_requires 与 requirements files

install_requires

install_requires 是一个 setuptools setup.py 关键字,它应该用来指定一个项目 最小 需要正确运行的内容。当项目由 pip 安装时,这就是用来安装其依赖的规范。

例如,如果项目需要 A 和 B ,您的 install_requires 会是这样的:

install_requires=[
   'A',
   'B'
]

此外,最好的做法是指出任何已知的下限或上限。

例如,您可能知道您的项目至少需要 ‘A’ 的 v1 ,’B’ 的 v2 ,所以它会是这样的:

install_requires=[
   'A>=1',
   'B>=2'
]

也可能知道项目 A 遵循语义上的版本管理,而 ‘A’ 的 v2 版将表明兼容性的中断,所以不允许v2版是有意义的:

install_requires=[
   'A>=1,<2',
   'B>=2'
]

使用 install_requires 将依赖关系固定在特定的版本上,或者指定子依赖关系(即您的依赖关系的依赖关系),都不是最佳做法。 这是对用户的过度限制,使用户无法获得依赖性升级的好处。

最后,重要的是要了解 install_requires 是“Abstract”要求的列表,即只是名称和版本限制,并不能确定从哪里满足依赖关系(即从什么索引或来源)。在安装时使用 pip 选项确定在哪里(即如何使它们“Concrete”)。 1

需求文件

Requirements Files 最简单的描述,只是放在文件中的 pip install 参数列表。

install_requires 定义了单个项目的依赖项, Requirements Files 通常用于定义完整 Python 环境的要求。

尽管 install_requires 要求是最低限度的,但要求文件通常包含固定版本的详尽列表,目的是实现完整环境的 repeatable installations

install_requires 需求是“Abstract”的,即不与任何特定索引相关联,需求文件通常包含 pip 选项,如 --index-url--find-links 使需求“Concrete”,即与包的特定索引或目录相关联。 1

在安装过程中,install_requires 元数据会被 pip 自动分析,而需求文件则不会,而它只有在用户使用 python -m pip install -r 专门安装时才会使用。


1(1,2)

For more on “Abstract” vs “Concrete” requirements, see https://caremad.io/posts/2013/07/setup-vs-requirement/.