python 弃用pip后,Docker的构建速度直接提升10倍

?!

准确说不是弃用,而是将pip换成了uv。uv是一个用Rust开发的Python包管理器,和pip相比,它有几个显著优势:

  1. 构建速度更快 :Nick在多个项目中测试后发现,使用uv安装依赖的速度几乎是pip的10倍。

  2. 无需虚拟环境 :uv允许你直接在非root用户下安装依赖,而不是依赖venv隔离环境,这对容器化部署尤其友好。

  3. 自动生成锁文件 :只需在pyproject.toml里写下最顶层依赖,uv会自动生成uv.lock,而且能保持依赖树的完整性,比pip freeze更可控。

博主Nick Janetakis演示了切换步骤:

  • 删除原来的requirements.txt,改用pyproject.toml声明依赖;

  • Dockerfile中通过COPY指令引入uv的二进制文件,并替换依赖安装脚本;

  • 设置相关环境变量,避免在容器中生成虚拟环境,同时预编译字节码;

  • 替换安装命令,用uv sync --frozen --no-install-project保持锁定版本;

  • 可用脚本快捷运行uv add/remove、检查依赖更新等操作。

博主Nick的Flask和Django两个项目,都已经完成了从pip到uv的切换,并成功跑起来,切换过程非常顺滑。


作者:spike

分类: Python

创作时间:2025-06-27

更新时间:2025-06-27

联系方式放在中括号之中例如[[email protected]],回复评论在开头加上标号例如:#1