- 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.2pip-sync
- 作用:根据 requirements.txt,同步你的虚拟环境,安装缺失依赖,删除多余依赖,确保环境和 requirements.txt 完全一致。
- 示例:
pip-sync requirements.txt适合人群
- 喜欢使用 pip,但又希望有类似于 poetry 或 pipenv 的依赖锁定能力。
- 想要明确掌控依赖版本,避免 “依赖地狱”。
- 团队协作中需要保证所有人开发环境一致。