更新requirements.txt的命令
以下是更新 requirements.txt 文件的几种常用命令:
1. 从当前环境生成/更新 requirements.txt
1.1 生成所有包(包括子依赖)
pip freeze > requirements.txt
1.2 只生成项目直接依赖的包(推荐)
# 使用 pip-chill(需要先安装)
pip install pip-chill
pip-chill > requirements.txt
# 或者使用 pipreqs(需要先安装)
pip install pipreqs
pipreqs . --force
2. 安装 requirements.txt 中的包
pip install -r requirements.txt
3. 更新特定包并更新 requirements.txt
3.1 更新单个包
pip install --upgrade package_name
pip freeze | grep package_name > requirements.txt
3.2 更新所有包
# 更新所有包
pip install --upgrade -r requirements.txt
# 然后重新生成 requirements.txt
pip freeze > requirements.txt
4. 添加新包到 requirements.txt
4.1 安装并添加
pip install package_name
pip freeze | grep package_name >> requirements.txt
4.2 使用 pip-tools(推荐用于复杂项目)
# 安装 pip-tools
pip install pip-tools
# 创建 requirements.in 文件(只写直接依赖)
echo "package_name" > requirements.in
# 编译生成 requirements.txt
pip-compile requirements.in
# 安装
pip-sync requirements.txt
5. 维护 requirements.txt 的常用工作流
5.1 标准工作流
# 1. 创建虚拟环境(推荐)
python -m venv venv
source venv/bin/activate # Linux/Mac
# venv\Scripts\activate # Windows
# 2. 安装包
pip install package1 package2
# 3. 生成 requirements.txt
pip freeze > requirements.txt
# 4. 在新环境中安装
pip install -r requirements.txt
5.2 使用 requirements.in 和 pip-tools(推荐)
# requirements.in(手动维护的直接依赖)
requests>=2.25.0
pytest>=6.0.0
# 编译生成精确版本的 requirements.txt
pip-compile requirements.in
# 同步环境
pip-sync requirements.txt
6. 检查 requirements.txt 中的过时包
# 检查过时的包
pip list --outdated
# 更新所有过时的包
pip install --upgrade $(pip list --outdated | awk 'NR>2 {print $1}')
7. 验证 requirements.txt
# 检查是否有语法错误
pip install -r requirements.txt --dry-run
# 或者
python -c "import pkg_resources; pkg_resources.parse_requirements(open('requirements.txt'))"
推荐的最佳实践
使用 pip-tools(最推荐):
# 安装
pip install pip-tools
# 创建 requirements.in
echo "pytest>=7.0.0" > requirements.in
echo "requests>=2.28.0" >> requirements.in
# 编译
pip-compile requirements.in
# 安装
pip-sync requirements.txt
简单项目使用:
# 生成
pip freeze > requirements.txt
# 安装
pip install -r requirements.txt
选择哪种方法取决于你的项目复杂度。对于大型项目,推荐使用 pip-tools,对于小型项目,使用 pip freeze 就足够了。

浙公网安备 33010602011771号