忘记 pip install,uv安装 Python 包的速度快100 倍⚡

 

我看到了这条推文。

这是谁?

Charlie Marsh是Astral 的创始人

该公司正在开发工具,使开发人员能够更快地发布优秀软件。

他们首先发布了Ruff,与现有的像Flake8这样的代码检查工具和像Black这样的格式化工具相比,速度提高了10 - 100倍。一种极快的代码检查工具和格式化工具

现在回到uv。

什么是uv?

uv是一个超快速的Python包安装器和解析器,用Rust编写,是pip、pip-tools和virtualenv的高速替代品。

它比pip和pip - tools快10 - 100倍:在缓存预热的情况下,uv的安装几乎是瞬间完成的。

还有一些其他亮点:

  • 节省磁盘空间:使用全局缓存来防止依赖项重复。
  • 随处可用:支持macOS、Linux和Windows。
  • 易于安装:你不需要安装Python或Rust。你可以使用curl、pip或brew来使用它。
  • 高级特性:支持依赖项版本覆盖和替代解析策略。
  • 更好的错误消息:具有冲突跟踪解析器的一流错误消息。
  • 高级pip功能:可编辑安装、git依赖项、本地依赖项、源代码分发。

为什么它这么快?

  • Rust:Rust以其速度和安全性著称。
  • 解析器:一种智能的方法来确定哪些包版本可以一起工作。
  • 全局模块缓存:它记住已经见过的文件,所以不会重新下载或重新构建依赖项。
  • 写时复制和硬链接:这有助于最小化磁盘空间的使用。

uv的更大愿景是用它的速度和可靠性改变Python包管理。

下一代包和项目管理工具?

如果你在Python生态系统中待的时间足够长,你就会知道设置Python环境或创建一个包是多么痛苦。

uv计划建立一个“Python的Cargo”,一个统一的Python包和项目管理器,它极其快速、可靠且易于使用。

想象一下:一个单一的二进制文件,它引导你的Python安装,并为你提供使用Python进行高效生产所需的一切,不仅捆绑了pip、pip - tools和virtualenv,还包括pipx、tox、poetry、pyenv、ruff等等。

Python工具使用可能是一种信心不足的体验:建立一个新的或现有的项目需要大量的工作,且命令会以令人困惑的方式失败。相比之下,在Rust生态系统中工作时,你相信工具会成功。Astral工具链旨在将Python从一种信心不足的体验转变为一种信心十足的体验。

我很高兴看到uv显著改善Python开发体验!

基准测试

让我们看看他们基准测试中的一些数据。

冷安装(快8 - 10倍)

这相当于在一台新机器上运行uv pip sync。

在没有缓存的情况下,uv比pip和pip - tools快8 - 10倍。

热安装(快80 - 115倍)

在缓存预热的情况下(例如,重新创建一个虚拟环境或更新一个依赖项),它快80 - 115倍。

创建虚拟环境

它比python - m venv快约80倍,比virtualenv快7倍。

我在Hugging Face的transformers包上测试了uv。速度差异非常明显。

如何使用?

下面是开始使用 uv 时应该掌握的几个命令。

安装

Deepnote

# On macOS and Linux.
curl -LsSf https://astral.sh/uv/install.sh | sh

# On Windows.
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"

# With pip.
pip install uv

# With pipx.
pipx install uv

# With Homebrew.
brew install uv

# With Pacman.
pacman -S uv

创建 venv

uv venv  # Create a virtual environment at .venv.

激活 venv

# On macOS and Linux.
source .venv/bin/activate

# On Windows.
.venv\Scripts\activate

安装软件包

uv pip install flask                # Install Flask.
uv pip install -r requirements.txt  # Install from a requirements.txt file.
uv pip install -e .                 # Install the current project in editable mode.
uv pip install "package @ ."        # Install the current project from disk
uv pip install "flask[dotenv]"      # Install Flask with "dotenv" extra.

生成锁定的依赖项

uv pip compile pyproject.toml -o requirements.txt   # Read a pyproject.toml file.
uv pip compile requirements.in -o requirements.txt  # Read a requirements.in file.

同步依赖项

uv pip sync requirements.txt  # Install from a requirements.txt file.

以上是本文的全部内容,感谢阅读!

### 如何使用 UV 的国内镜像源加速下载 UV 是一种用于管理 Python 虚拟环境以及依赖项的工具,类似于 Pipenv 或 Poetry。为了提高的下载速度并增强稳定性,可以配置国内镜像源来替代官方 PyPI 源。 #### 方法一:通过命令行指定镜像源 可以在执行 `uv` 命令时直接指定镜像源地址。例如,如果需要安装 `requests` 库并通过清华大学的镜像源完成,则可运行以下命令: ```bash uv add --default-index https://pypi.tuna.tsinghua.edu.cn/simple requests ``` 此方式适用于临时切换镜像源的情况[^1]。 --- #### 方法二:全局配置文件设置默认镜像源 对于更长期的解决方案,可以通过编辑或创建 UV 的全局配置文件实现默认镜像源的更改。具体操作如下: - **Linux 和 macOS**: 编辑位于 `~/.config/uv/uv.toml` 的配置文件。 - **Windows**: 编辑位于 `%APPDATA%/uv/uv.toml` 的配置文件。 如果没有该文件,可以手动创建,并添加以下内容以启用腾讯云的镜像源: ```toml index-url="https://mirrors.cloud.tencent.com/pypi/simple/" ``` 保存后,所有的 `uv` 安装操作都会自动使用所配置的镜像源[^3]。 --- #### 方法三:利用其他主流镜像源 除了腾讯云外,还有多个常用的国内镜像源可供选择。以下是部分推荐选项及其对应的 URL 地址: | 镜像名称 | 镜像地址 | |----------------|---------------------------------------------| | 清华大学 | https://pypi.tuna.tsinghua.edu.cn/simple | | 阿里云 | https://mirrors.aliyun.com/pypi/simple | | 华东理工大学 | https://pypi.ecust.edu.cn/simple | 例如,要将清华镜像作为默认源,可在配置文件中写入: ```toml index-url="https://pypi.tuna.tsinghua.edu.cn/simple" ``` 或者,在单次命令中显式指定阿里云镜像源: ```bash pip install some-package -i https://mirrors.aliyun.com/pypi/simple ``` 注意这里的 `-i` 参数同样适用于 `uv` 工具中的某些场景[^2]。 --- #### 注意事项 1. 若同时存在环境变量与配置文件定义,默认情况下环境变量具有更高的优先级[^1]。 2. 确认选用的镜像源有效且支持 HTTPS 连接,避免因网络问题引发错误。 3. 修改配置前建议备份原始文件以防误操作影响正常使用。 --- ### 示例代码片段 假设需一次性安装多个库至虚拟环境中,可通过以下脚本批量处理: ```bash #!/bin/bash PACKAGES=("numpy" "pandas" "flask") for package in "${PACKAGES[@]}"; do uv add --default-index https://pypi.tuna.tsinghua.edu.cn/simple "$package" done ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Qingmu2024

您的鼓励是我最大的创作动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值