HOWTO · Python
在 Python 中创建 requirements.txt
了解如何在 Python 中创建 requirements.txt。
本页内容
requirements.txt 文件记录项目所需的 Python 发行包,方便其他开发者安装这些依赖,而不必获取你的整个环境。它有助于共享依赖项,但无法保证不同计算机之间或不同时期的环境完全一致:Python 版本、操作系统和软件包版本都可能不同。
使用 pip freeze 创建 requirements.txt
激活项目所用的 Python 环境,切换到项目目录,然后运行 pip freeze > requirements.txt。pip freeze 命令会记录当前活动环境中已安装的发行包及其版本。Shell 会在当前目录写入 requirements.txt;如果该目录中已有同名文件,就会将其替换。由于这种方法记录的是整个环境,而不是检查项目实际使用了哪些包,因此列表可能包含项目未使用的软件包。建议先使用干净的项目环境,以免记录无关的软件包。
手动创建 requirements.txt
对于小型项目,或需要有意挑选依赖项的情况,可以在项目目录中创建名为 requirements.txt 的文本文件,每行列出一个发行包。例如,requests>=2.31,<3 为一个软件包指定兼容的版本范围,而 Flask==3.0.2 则为另一个软件包指定确切版本。选择项目支持的版本;固定确切版本有助于提高可重复性,但仍无法涵盖所有系统层面或 Python 版本差异。
在项目目录中运行以下示例,以创建一个简单的依赖文件:
本节中的代码以及显示的标签或输出仍为英文。
from pathlib import Path
requirements = ["requests>=2.31,<3", "Flask==3.0.2"]
Path("requirements.txt").write_text("\n".join(requirements) + "\n", encoding="utf-8")
手动选择依赖项可以让你控制要列出哪些直接依赖。将此文件与项目一同纳入版本控制,并在项目开始依赖其他软件包时更新它。你可以使用下方安装章节中的命令安装文件所列的依赖项。
根据项目导入项使用 pipreqs 生成 requirements.txt
pipreqs 会扫描项目中的 Python 源文件,根据导入的模块推断可能需要的发行包。使用 python -m pip install pipreqs 安装它,然后切换到项目目录并运行 pipreqs .。在依赖生成的文件之前,请先检查内容:导入名称可能与发行包名称不同,而动态加载的软件包可能不会出现在源代码的导入语句中。根据导入项进行推断可以作为起点,但无法完整记录应用程序所需的一切。检查并修改文件后,将它与项目一同保存,并调整软件包版本以符合你支持的环境。
从 requirements.txt 安装软件包
要安装列出的软件包,请先激活要用于安装它们的环境,然后在项目目录中运行 python -m pip install -r requirements.txt。使用 python -m pip 可以将 pip 与该 python 命令对应起来,从而降低依赖被安装到其他解释器、而项目却由另一个解释器运行的可能性。此命令会安装文件中列出的项目,但不会替你创建或激活环境。
使用虚拟环境并选择合适的方法
使用 python -m venv .venv 为项目创建环境。在 macOS 或 Linux 上,使用 source .venv/bin/activate 激活环境;在 Windows PowerShell 中,使用 .\.venv\Scripts\Activate.ps1。然后,在该环境处于活动状态时运行所选的生成方法。想要记录已安装的发行包时,使用 pip freeze;想要维护经过挑选的依赖清单时,手动填写;想要获取基于导入项的建议以供检查时,使用 pipreqs。无论选择哪种方法,都应在目标环境中运行安装命令,并随着项目依赖项的变化检查和更新文件。