一招让Docker速度快10倍pip换成uv后Docker快10倍
弃用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的切换,并成功跑起来,切换过程非常顺滑。
感兴趣的小伙伴可以点击原文: