百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

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

itomcoil 2025-08-03 05:28 6 浏览

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函数的语法是编程中的核心概念之一,它允许你将代码块封装为可重复调用的单元。基本语法定义函数:示例参数类型位置参数(PositionalArguments)按参数定义...

Python排序90%人只会用sorted()?这7个高阶技巧让你代码效率翻倍

高效处理数据的关键,往往从掌握排序开始。排序操作在Python编程中的重要性常被低估——直到你面对一个杂乱无章的数据集。作为数据处理的核心操作之一,排序效率直接决定了程序性能和代码可读性。无论你正在清...

第四章:Python函数

4.1函数的定义与调用4.1.1理论知识函数是组织好的、可重复使用的代码块,用于执行特定的任务。它可以提高代码的复用性和可维护性。在Python中,定义函数使用def关键字,其基本语法如下:def...

ArcGIS 一个独立运行的Python程序编写和打包

写代码#coding=utf8#-*-coding:UTF-8-*-importarcpyfromarcpyimportenvimportosimportsys##########...

python入门到脱坑经典案例—计算三角形的面积

下面为大家详细讲解如何用Python计算三角形面积。我们会从最基础的数学公式开始,逐步深入编程实现,并涵盖多个实用版本。以下是完整的教学指南:1.数学原理回顾三角形面积公式:面积=(底边长度...

Python运算技巧:10种计算列表平方的高效方法

1.使用for循环此方法遍历列表中的每个数字,使用**运算符计算其平方,然后将结果添加到新的列表中。2.使用列表推导式此方法使用列表推导式,这是一种更简洁的方式,可以在现有列表的每个项目上执行操作...

墙裂推荐,5个学习Python编程最佳的开源库

学习Python少不了的就是项目,我在GitHUB上找了几个比较好的开源库,大家可以跟着去学习。1、learn-python3这个存储库一共有19本Jupyter笔记本。它涵盖了字符串和条件之类的基础...

使用Python玩转ftplib库:实现ftp文件传输自动化全攻略

大家好!在日常工作中都会使用到ftp功能,用于上传和下载文件等,本章主要介绍Python的标准库ftplib来实现FTP文件传输,帮助我们实现ftp自动化。一、ftplib库核心函数速查表1连接与登...

Python零基础入门学习23:常用第三方库之图像处理库Pillow

注:本文所有代码均经过Python3.7实际运行检验,保证其严谨性。本文约2000字,阅读时间约为4分钟。Pillow库的概述Pillow库是Python最好的图像处理库,可能是使用频率最高的图像处...

Python编程之BeautifulSoup库

#头条创作挑战赛#BeautifulSoup是一个可以从HTML或XML文件中快速提取数据的Python库。它能够通过转从入门到精通Python网络爬虫框架Scrapy38换器实...

Python3 新一代Http请求库Httpx使用(详情版)

我们经常使用Python语言的朋友们都清楚,requests是使用率非常高的HTTP库,甚至更早Python2中使用的是urllib、urllib2,也给我们提供了许多方便的功能。但是自从...

小白也可以玩的Python爬虫库,收藏一下

最近,微软开源了一个项目叫「playwright-python」,作为一个兴起项目,出现后受到了大家热烈的欢迎,那它到底是什么样的存在呢?今天为你介绍一下这个传说中的小白神器。Playwright是...

apscheduler,一个超厉害的 Python 库!

大家好,今天为大家分享一个超厉害的Python库-apscheduler。Github地址:https://github.com/agronholm/apschedulerAPSchedule...

给3D Slicer添加Python第三方插件库

对临床医生或医学影像算法研究人员来说,3DSlicer是不错的临床实践或科研工具。随着人工智能和深度学习技术的普及,python已经作为原型开发和验证的计算机编程语言。3DSlicer自带pyt...

Paramiko:一个非常实用的Python库

前言Python的Paramiko库,它是一个用于实现SSHv2协议的客户端和服务器的库。通过使用Paramiko,我们可以在Python程序中轻松地实现远程服务器的管理、文件传输等功能。特别做智能硬...