• https://github.com/jazzband/pip-tools
  • pip-tools 从项目中直接使用的包列表中创建所有依赖项的锁定文件,并确保仅安装这些依赖项。
  • Python 包管理工具,旨在帮助开发者 更好地管理依赖包及其版本,确保环境的可重复性和可维护性。
  • 主要包含两个命令行工具:
pip-compile
pip-sync

pip-compile

  • 作用: 从一个简洁的 requirements.in 文件生成一个详细的、可直接使用的 requirements.txt 文件,锁定所有依赖的具体版本(包括子依赖)。

  • 优势:

    • 自动处理依赖冲突。
    • 可以轻松升级或固定某些依赖版本。
    • 类似于 poetry lock 或 npm package-lock.json 的功能,但更轻量灵活,适用于 pip 用户。
  • 示例:

# 先写 requirements.in,里面只写你关心的包
# requirements.in
Django>=3.2
requests
 
# 然后运行
pip-compile requirements.in
 
# 生成 requirements.txt,内容大概是
# Django==3.2.14
# pytz==2024.1
# requests==2.31.0
# certifi==2024.2.2

pip-sync

  • 作用:根据 requirements.txt,同步你的虚拟环境,安装缺失依赖,删除多余依赖,确保环境和 requirements.txt 完全一致。
  • 示例:
pip-sync requirements.txt

适合人群

  • 喜欢使用 pip,但又希望有类似于 poetry 或 pipenv 的依赖锁定能力。
  • 想要明确掌控依赖版本,避免 “依赖地狱”。
  • 团队协作中需要保证所有人开发环境一致。

相关

  • pip — pip-tools 是 pip 的依赖锁定补充
  • uv — uv 可替代 pip-tools 的依赖锁定 & 解析功能