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/.