需求文件格式¶
需求文件作为 pip 在使用 pip install 时安装项目的清单。使用此格式的文件通常被称为“pip requirements.txt 文件”,因为 requirements.txt
通常是这些文件的名字(尽管这不是必需的)。
注意
需求文件格式与 pip 的许多内部细节紧密相关(例如,pip 的命令行选项)。基本格式相对稳定且可移植,但此处描述的完整语法仅供 pip 使用,其他工具在使用它时应考虑到这一点。
示例¶
# This is a comment, to show how #-prefixed lines are ignored.
# It is possible to specify requirements as plain names.
pytest
pytest-cov
beautifulsoup4
# The syntax supported here is the same as that of requirement specifiers.
docopt == 0.6.1
requests [security] >= 2.8.1, == 2.8.* ; python_version < "2.7"
urllib3 @ https://github.com/urllib3/urllib3/archive/refs/tags/1.26.8.zip
# It is possible to refer to other requirement files or constraints files.
-r other-requirements.txt
-c constraints.txt
# It is possible to refer to specific local distribution paths.
./downloads/numpy-1.9.2-cp34-none-win32.whl
# It is possible to refer to URLs.
http://wxpython.org/Phoenix/snapshot-builds/wxPython_Phoenix-3.0.3.dev1820+49a8884-cp34-none-win_amd64.whl
结构¶
需求文件的每一行都表示要安装的内容,或者是对 pip install 的参数。支持以下格式
[[--option]...]
<requirement specifier>
<archive url/path>
[-e] <local project path>
[-e] <vcs project url>
有关需求规范的详细信息,请参见 需求规范。有关所有这些格式的示例,请参见 示例。
编码¶
需求文件默认使用 utf-8
编码,并且还支持 PEP 263 样式注释以更改编码(即 # -*- coding: <encoding name> -*-
)。
行延续¶
以未转义的 \
结尾的行被视为行延续,并且它后面的换行符将被有效地忽略。
支持的选项¶
需求文件仅支持某些 pip install 选项,这些选项列在下面。
全局选项¶
以下选项会影响整个 pip install
运行,并且必须在其各自的行上指定。
示例
要指定 --pre、--no-index 和两个 --find-links 位置
--pre
--no-index
--find-links /my/local/archives
--find-links http://some.archives.com/archives
每个需求选项¶
在版本 7.0 中添加。
可以应用于单个需求的选项是
--hash
(用于 哈希检查模式)
引用其他需求文件¶
如果您愿意,您可以引用其他需求文件,如下所示
-r more_requirements.txt
您还可以引用 约束文件,如下所示
-c some_constraints.txt
使用环境变量¶
在版本 10.0 中添加。
pip 支持在需求文件中使用环境变量。
您必须使用 POSIX 格式的变量名,包括括号包围大写名称,如以下示例所示:${API_TOKEN}
。pip 会在运行时尝试找到主机系统上定义的相应环境变量。
注意
不支持其他变量展开语法,例如 $VARIABLE
和 %VARIABLE%
。
您现在可以在环境变量中存储敏感数据(令牌、密钥等),并仅为您的需求指定变量名,让 pip 在运行时查找值。这种方法与常用的 12 因子配置模式 相一致。
影响构建系统¶
危险
这将禁用轮子的使用(缓存或其他)。这意味着构建速度可能会变慢,确定性较低,可靠性较低,并且安装后可能无法正常运行。
这种机制只为了向后兼容而保留,应该被认为已弃用。pip 的未来版本可能会删除这些选项。
--global-option
选项用于将选项传递给 setup.py
。
注意
这些选项与 pip 如何使用 setup.py (旧版) 构建系统接口来调用 setuptools 紧密相关。它与较新的 pyproject.toml 构建系统接口不兼容。
这将无法与其他构建后端或较新的仅限 setup.cfg 的项目一起使用。
如果您有一个声明,例如
FooProject >= 1.2 --global-option="--no-user-cfg"
上述内容大致等同于运行 FooProject 的 setup.py
脚本,如下所示
python setup.py --no-user-cfg install
请注意,传递给 setup.py
的唯一方法是使用多个 --global-option
选项。
注释¶
以
#
开头的行被视为注释并被忽略。空格后跟#
将导致#
和该行的其余部分被视为注释。注释在处理行延续后被剥离。