Skip to content

切换到 UV 包管理器

Published: at 03:22 PM

在尝试将 UV 作为 Python 的包管理器后,我现在后悔浪费了那么多生命等待 pip 安装完成。如果你厌倦了缓慢的包安装并想为你的 Python 开发工作流增压,是时候切换到 UV 了。

什么是 UV,它有何不同?

UV(发音为”you-vee”)是一个用 Rust 编写的革命性 Python 包管理器和解析器。它旨在作为 pip 的即插即用替代品,在速度和效率方面提供显著的改进。以下是 UV 脱颖而出的原因:

  1. 闪电般快速的安装:UV 可以比 pip 快 10-100 倍安装包,这要归功于其并行下载和安装能力。

  2. Rust 驱动的性能:使用 Rust 构建,UV 利用该语言的速度和内存安全性,提供健壮且高效的包管理体验。

  3. 兼容性:UV 旨在与 pip 完全兼容,使其易于集成到现有项目中而不破坏你的工作流。

  4. 改进的依赖解析:UV 使用最先进的解析器,可以比 pip 更有效地处理复杂的依赖树。

  5. 内置虚拟环境管理:UV 包含创建和管理虚拟环境的功能,简化你的开发设置。

如何安装 UV

开始使用 UV 很简单。以下是如何安装它:

  1. 确保你的系统上安装了 Python 3.7 或更高版本。

  2. 打开终端并运行以下命令:

    pip install uv
  3. 安装后,你可以通过将 pip 命令替换为 uv pip 开始使用 UV。例如:

    uv pip install requests
    uv pip install -r requirements.txt
  4. 使用 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"]

Previous Post
AI时代新兴的工作头衔
Next Post
有效生成式 AI 实施策略