使用 UV 管理 Python 虚拟环境入门

Python 开发者在管理多个项目的虚拟环境和依赖项时常常面临挑战。传统的工具,如 virtualenv、pip 和 pyenv,虽然一直为我们服务得很好,但它们可能速度较慢且操作繁琐。现在,我们迎来了 UV,这是一个用 Rust 编写的现代、超快速的 Python 包和项目管理工具。UV 简化了虚拟环境管理、依赖项处理以及 Python 版本控制,为 Python 开发者提供了一站式解决方案。




在本文中,我们将探讨如何使用 UV 有效管理 Python 虚拟环境,突出其关键功能和优势。


一、UV 是什么?

UV 是下一代 Python 包和项目管理工具,旨在取代像 pip、virtualenv、poetry 和 pyenv 这样的工具。UV 以速度和效率为核心,为管理 Python 环境、依赖项甚至 Python 版本提供统一界面。它用 Rust 编写而成,比传统工具快得多。


UV 的关键功能:

  • 速度:UV 比 pip 和其他工具快 10-20 倍。
  • 统一工具:将多个工具的功能整合到一个工具中。
  • 易用性:简化虚拟环境的创建、激活和管理。
  • 可复现性:通过 pyproject.toml 和 uv.lock 文件确保一致的环境。
  • Python 版本管理:轻松切换 Python 版本。


二、安装 UV

在深入了解虚拟环境管理之前,你需要先安装 UV。以下是安装方法:


对于 Linux/Mac:

curl -LsSf https://astral.sh/uv/install.sh | sh


对于 Windows:

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


使用 pip:

你也可以通过 pip 安装 UV:

pip install uv


验证安装:

uv --version


三、使用 UV 创建和管理虚拟环境

1. 创建虚拟环境

使用 UV 创建虚拟环境非常简单。进入你的项目目录并运行以下命令:

uv venv


这将在你的项目文件夹中创建一个名为 .venv 的目录,其中包含一个隔离的 Python 环境。


如果你想指定 Python 版本:

uv venv --python 3.13.3


在macOS环境中,执行上述命令时,如果出现 Permission denied 异常,可以通过如下命令解决:

创建目录:sudo mkdir -p ~/.local/share/uv/python

更改权限:sudo chown -R $USER ~/.local/share/uv


这条命令用于修改 ~/.local/share/uv 目录及其所有子目录和文件的所有者权限。详细解释如下:

  • sudo - 使用超级用户权限执行命令
  • chown - 更改文件或目录的所有者
  • -R - 递归处理,表示同时处理目录下的所有文件和子目录
  • $USER - 环境变量,表示当前登录的用户名
  • ~/.local/share/uv - 目标目录路径


2. 激活虚拟环境

激活虚拟环境的命令如下:

source .venv/bin/activate 【linux、mac】

.venv\Scripts\activate 【windows】


查看安装结果:

uv python list


可以显示可安装和已安装的Python版本,如图所示:



已安裝版本会显示安裝路径。uv python list --only-installed 查看已安裝的版本。


你也可以通过 uv python dir 指令找到 Python 的安裝路径:

uv python dir

输出:
/Users/xxx/.local/share/uv/python


3. 安装依赖项

激活环境后,你可以使用 UV 的 pip 接口安装包:

uv pip install requests


为了将依赖项添加到你的 pyproject.toml 文件中,以便更好地复现环境:

uv add requests



如果你想生成 pyproject.toml 文件,可以使用以下命令,它会创建一些文件:

uv init


4. 冻结依赖项

生成已安装依赖项的列表:

uv pip freeze > requirements.txt


对于使用 pyproject.toml 的项目,UV 会自动管理依赖项并创建 uv.lock 文件以锁定版本。


UV 中的锁文件是什么?

锁文件(uv.lock)是 UV 依赖管理中的重要组成部分。当你运行 uv add 命令安装依赖项时,UV 会自动生成并更新一个 uv.lock 文件。


锁文件具有以下关键作用:

  • 记录安装的所有依赖项及其子依赖项的确切版本。
  • 通过“锁定”依赖版本,确保在不同环境中实现可重现的构建。
  • 通过保持一致的包版本,防止“依赖地狱”。
  • 由于 UV 可以使用已锁定的版本,而无需再次解析依赖项,从而加快安装速度。


UV 会自动管理锁文件,你无需手动编辑它。锁文件应提交到版本控制系统中,以确保所有开发者使用相同的依赖版本。


锁文件与 requirements.txt 的区别

虽然锁文件和 requirements.txt 都用于跟踪依赖项,但它们的目的和使用场景有所不同。锁文件包含有关确切包版本及其完整依赖树的详细信息,确保在开发过程中保持一致的环境。而 requirements.txt 文件则更为简单,通常只列出直接依赖项,并且得到了 Python 工具的广泛支持。


锁文件对于开发过程至关重要,用于维护可重现的构建并防止依赖冲突。而 requirements.txt 文件更适合用于部署场景,或者在与可能不使用 UV 的用户共享代码时。它们也适用于与不支持 UV 锁文件格式的工具和服务保持兼容性。


你可以通过在开发过程中使用 UV 的锁文件,同时为部署生成一个 requirements.txt 文件,从而同时维护这两种文件。要从 UV 锁文件生成一个 requirements.txt 文件,可以使用以下命令:

uv export -o requirements.txt


5. 退出和删除环境

退出虚拟环境:

deactivate


四、将现有项目迁移到 UV

如果你有一个使用 virtualenv 配置的现有项目,可以轻松迁移到 UV:

  • 进入你的项目目录。
  • 初始化 UV:uv init
  • 转换依赖项:uv add -r requirements.txt


这将创建 pyproject.toml 和 uv.lock 文件,使你的项目兼容 UV。


五、结论

UV 是 Python 开发者的“游戏规则改变者”,它提供了一种现代、高效的方式来管理虚拟环境和依赖项。无论是开始新项目还是迁移现有项目,UV 都简化了流程并提高了生产力。


准备好为你的 Python 开发工作流程注入活力了吗?今天就安装 UV,体验其中的差异吧!

#春日生活打卡季#

相关文章

python环境怎么搭建?小白看完就会!简简单单

很多小伙伴安装了python不会搭建环境,看完这个你就会了Python可应用于多平台包括 Linux 和 Mac OS X。你可以通过终端窗口输入 "python" 命令来查看本地是否...

Python环境安装教程(python环境的安装)

文章目录前言一、安装python运行环境 1.官网https://www.python.org下载安装包.exe 2.安装python二、python模块下载 1.配置pip环境变量 2.下载pyth...

Python 安装+环境搭建(python环境怎么安装)

前言本篇文章来说一下 Python 的环境搭建,也是 Python 之路上一个必备的操作~提示:本文的环境配置是 Python3 的开发环境,后续教程也都是 Python3Python 安装+环境搭建...

怎样安装和设置Python环境(python安装教程环境配置)

安装和设置Python环境可以分为以下几个步骤:下载Python安装文件首先,你需要下载适合你操作系统的Python安装文件。可以在Python官方网站(https://www.python.org/...

松勤技术精选:教你创建一个独立的python虚拟环境

python虚拟环境为什么要用虚拟环境python的虚拟环境类似于虚拟机,创建一个独立的python运行环境,是跟全局环境中的库相互独立虚拟环境优势虚拟环境相互独立,互相不影响防止包管理混乱和版本冲突...

手把手教你进行Python虚拟环境配置

/1 前言/ 咱们今天就来说一下Python的虚拟环境,可能有的小伙伴会疑惑,Python的虚拟环境有什么用呢?接下来我们一起来探讨一下。/2 虚拟环境的作用/ 咱们今天就来说一下Python的虚拟环...