需求文件格式

需求文件作为 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 中添加。

可以应用于单个需求的选项是

引用其他需求文件

如果您愿意,您可以引用其他需求文件,如下所示

-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 选项。