在尝试将 UV 作为 Python 的包管理器后,我现在后悔浪费了那么多生命等待 pip 安装完成。如果你厌倦了缓慢的包安装并想为你的 Python 开发工作流增压,是时候切换到 UV 了。
什么是 UV,它有何不同?
UV(发音为”you-vee”)是一个用 Rust 编写的革命性 Python 包管理器和解析器。它旨在作为 pip 的即插即用替代品,在速度和效率方面提供显著的改进。以下是 UV 脱颖而出的原因:
-
闪电般快速的安装:UV 可以比 pip 快 10-100 倍安装包,这要归功于其并行下载和安装能力。
-
Rust 驱动的性能:使用 Rust 构建,UV 利用该语言的速度和内存安全性,提供健壮且高效的包管理体验。
-
兼容性:UV 旨在与 pip 完全兼容,使其易于集成到现有项目中而不破坏你的工作流。
-
改进的依赖解析:UV 使用最先进的解析器,可以比 pip 更有效地处理复杂的依赖树。
-
内置虚拟环境管理:UV 包含创建和管理虚拟环境的功能,简化你的开发设置。
如何安装 UV
开始使用 UV 很简单。以下是如何安装它:
-
确保你的系统上安装了 Python 3.7 或更高版本。
-
打开终端并运行以下命令:
pip install uv -
安装后,你可以通过将
pip命令替换为uv pip开始使用 UV。例如:uv pip install requests uv pip install -r requirements.txt -
使用 UV 创建新的虚拟环境:
uv venv /path/to/new/venv
在 Docker 中使用 UV
UV 可以通过减少包安装所花费的时间来显著加快你的 Docker 构建。以下是如何在 Dockerfile 中使用 UV 的示例:
FROM ghcr.io/astral-sh/uv:0.4.18 as uv
# 在这里选择你的 python 版本
FROM python:3.10.1-slim-buster
# 在容器内用 uv 创建虚拟环境
RUN --mount=from=uv,source=/uv,target=./uv \
./uv venv /opt/venv
# 我们需要设置这个环境变量,以便 UV 知道在哪里
# 虚拟环境以安装软件包
ENV VIRTUAL_ENV=/opt/venv
# 确保虚拟环境在 PATH 中,这样我们可以使用安装的软件包的二进制文件,如 pip
# 而无需显式激活虚拟环境
ENV PATH="/opt/venv/bin:$PATH"
# 在容器内设置工作目录
WORKDIR /app
# 将 requirements 文件复制到容器中
COPY requirements.txt .
# 使用 uv 安装包,使用 --mount=type=cache 来缓存下载的包
RUN --mount=type=cache,target=/root/.cache/uv \
--mount=from=uv,source=/uv,target=./uv \
./uv pip install -r requirements.txt
COPY . .
EXPOSE 8000
# 设置入口点命令来运行 Python 应用
CMD ["python", "your-python-file.py"]