更新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 就足够了。

posted @ 2025-11-20 18:51  Haloiwuhan  阅读(380)  评论(0)    收藏  举报