pip-tools

  • 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 的依赖锁定能力。

  • 想要明确掌控依赖版本,避免 “依赖地狱”。

  • 团队协作中需要保证所有人开发环境一致。