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

uv——Python开发栈中的高效全能小工具

liuian 2025-06-30 17:58 49 浏览

每天写Python代码的同学,肯定都离不开pip、virtualenv、Poetry等基础工具,但是对这些工具可能是又恨又离不开。那么有什么好的替代呢,虫虫今天就给大家介绍一个替代他们的小工具uv,一个Rust写的全能高性能工具,有了它前面那些都可以扔到垃圾箱去了。

概述

Pip是Python语言内置的包管理系统,用于安装和管理软件包。Pip是Python最常用的包管理系统,他大而臃肿,而且超级慢,时常还会遇到慢地卡住的情形。Pip的版本管理也有问题,如果依赖项配置文件编写的有问题或者是维护不及时,则会引发严重的依赖问题,并对项目维护产生负面影响。而且Pip还不能做到准确适配Python代码,导致在恢复运行时环境时成功率较低。

uv是“pip,但速度超快TM,是一个用Rust语言重写的一个Python堡管理器,实现用来为pip和pip-tools用于包管理。uv支持现代Python打包工具的所有功能:可编辑安装、Git依赖项、URL依赖项、本地依赖项、约束文件、源代码分发、自定义索引等等,所有这些都围绕与现有工具的直接兼容性而设计。uv的虚拟环境符合标准,可与其他工具互换使用——无需锁定或定制。

uv还支持跨平台使用,Linux、Windows和macOS通吃。

优势:全能且高效

uv的初始版本是一个兼容的API,主要支持pip和pip-tools背后的API uv pip接口,使其能够供现有项目零配置使用。uv身兼数职统一为一个整体,可以支持PIP、virtualenv、Conda、Poetry具有的所有功能,同时支持模块化,可以单独作为部分工具使用:

作为解析器,锁定依赖项:uv pip compile

环境虚拟管理:uv venv

包安装程序:uv pip sync

高性能:无需缓存,使用热缓存运行时(例如,重新创建虚拟环境或更新依赖项)速度提高80-115倍。uv 使用全局模块缓存来避免重新下载和重新构建依赖项,并利用支持的文件系统上的写时复制和硬链接来最大限度地减少磁盘空间使用。

基准测试显示:

简化的工具链:uv以单个静态二进制文件的形式发布,可以替换pip,pip-tools, 和virtualenv.uv,没有直接的Python依赖,可以将它与Python本身分开安装,从而避免管理pip跨多个Python版本安装。

依赖项:uv支持多解析策略。默认情况下,uv遵循标准Python依赖项解析策略,优先选择每个包的最新兼容版本。

--resolution=lowest针对其依赖项的最低兼容版本测试他们的包。uv允许针对任意目标Python版本进行解析。

--python-version参数,使即使在较新版本下运行时也能生成与Python 3.7兼容的。

通过-o overrides.txt允许依赖项“覆盖”。

使用:安装和上手

Uv既然是个静态文件工具,其安装非常简单,一般来说只需下载对应os的二进制包即可。也可以通过OS堡管理其或者脚本或者PyPI安装:

安装

# macOS 和Linux.

curl -LsSf astral.sh/uv/install.sh | sh
# Windows.
powershell -c "irm astral.sh/uv/install.ps1 | iex"
# pip安装
pip install uv
# pipx安装
pipx install uv
# Homebrew安装
brew install uv

虚拟环境:

安装成功后首先来创建一个虚拟环境:

uv venv

激活它:

source .venv/bin/activate
# Windows下使用
.venv\Scripts\activate

项目管理:

uv管理项目依赖项和环境,支持锁文件、工作区等, 类似于rye或者poetry:

uv init chongchong
Initialized project `chongchong` at `/home/lz/chongchong`

增加一个flask的项目

uv add flask

安装工具:

使用uv tool run,缩写别名uvx,先来是个好玩的:、

uvx pycowsay 'hello Chongchong!'

安装包

uv pip install flask

安装requirements.txt指定的依赖项

uv pip install -r requirements.txt

从硬盘安装当前项目

uv pip install "package @ ." 

管理依赖项:

要生成一组依赖项:

uv pip compile requirements.in -o requirements.txt
uv pip compile pyproject.toml -o requirements.txt
uv pip compile setup.py -o requirements.txt
echo flask | uv pip compile - -o requirements.txt
uv pip freeze | uv pip compile - -o requirements.txt

依赖项与虚拟环境同步:

uv pip sync requirements.txt

Python多版本管理

uv可以同时安装多个版本的python,比如

uv python install 3.11 3.12

列出系统中安装的python版本

uv python list --only-installed

通过特定python版本运行:

uv run --python pypy@3.11 -python

要切换项目的python版本

uv python pin 3.11

也可以通过项目的 pyproject.toml文件。例如,以下文件需要Python版本3.11以上版本:

...
requires-python = ">=3.11"

然后通过uv sync更新一下。

迁移:从PIP和Virtualenv切换到UV

上面介绍了uv的好处和基本功能使用,意识到uv的好处和了解其基本功能后是时候把手头项目切换到uv管理来了。实际上从PIP和Virtualenv迁移到UV非常简单,uv可以兼容现有Python打包标准。以下是我们介绍基本迁移步骤:

转换现有的虚拟环境项目

对现有项目使用,如果没有requirements.txt,先生成一个:

pip freeze > requirements.txt

然后,在同一目录中创建一个新的uv项目:

uv init .

最后,从通过依赖文件中安装依赖项:

uv pip install -r requirements.txt

替换常用的 pip/virtualenv命令

以下是使用uv等效命令替换常见pip和virtualenv命令的快速参考:

pip/virtualenv 命令

uv替代项目

python -m venv .venv

uv venv

pip install package

uv add package

pip install -r requirements.txt

uv pip install -r requirements.txt

pip uninstall package

uv remove package

pip freeze

uv pip freeze

pip list

uv pip list

这样就搞定了,现在就可以安全地删除旧的虚拟环境目录,并开始使用uv的虚拟环境管理。迁移过程通常是无缝的,可以随时回退到pip。

别名

在某些工作流程中,uv命令有点多,输入项目有点繁琐,可以设置一些别名来简化这项工作。

别名uvccinit创建虚拟环境,并激活之:

alias uvccinit='uv venv && source .venv/bin/activate'

uvccsync处理依赖项,当依赖项有变更时候更新:

alias uvccsync='uv pip compile requirements.in --quiet --output-file requirements.txt && uv pip sync requirements.txt'

总结

uv多快能打,是个python环境管理、包管理、项目管理和依赖管理等的全能瑞士军刀。只一个静态二进制包,可以提供提安全、现代、高性能、高集成且高效的传统工具(链)替代方案。uv提供的强大功能,可以显著提高python开发管理,对于大量依赖Python生态的开发人员,还是某个只需安装一个Python包尝尝鲜的小白同学,都是很好的选择。

当然uv作为一个先进现代的工具,也有些地方是和老前辈有些许差异的,需要额外注意:

虽然uv支持pip接口的大部分子集,但它并不支持全部功能集。它缺乏对一些传统功能的支持,比如.egg分布。另外uv生成的requirements.txt中是指定了特定于平台,这和poetry和pdm会生成平台无关的poetry.lock和pdm.lock不同。因此,uv的requirements.txt文件不支持跨平台和Python版本移植。

相关推荐

windows7 破解版(windows 7旗舰版破解密码)

步骤/方法按Windows徽标键+R(运行窗口),打开cmd运行窗口。输入slmgr.vbs-xpr后回车。这时会弹出一个窗口显示Win7的激活状态。Windows7旗舰版属于微软公司开发的...

专业数据恢复(专业数据恢复需要什么设备)

1、移动硬盘损坏以后,电脑无法识别到硬盘信息,那么整个硬盘数据将全部丢失。2、如果能够换一台电脑识别到,即使打不开,只要能够格式化,就有希望回复数据。可以尝试制作U盘系统盘的方法,打开u盘系统盘制作程...

声卡怎么连接手机唱歌

1.首先是使用音频连接线把手机的耳机孔/数据口与声卡的【直播】插孔相连;同样使用音频线把手机与声卡的【伴奏】插孔相连;耳机连接在声卡的【耳麦】插孔;连接好后打开直播手机,进入直播软件,伴奏设备播放歌曲...

iphone官网下载(苹果官网下载ios)

PP助手、同步推等手机助手都可以下载已经下架的应用,这类助手有很多,一搜一大把,而且就我知道的PP助手还能选择下载历史版本,当然也有部分应用是没在商店上架的,他们是通过企业证书公布自己的应用,需要到官...

photoshop免费软件(免费ps软件推荐)

photoshop是adobe公司旗下的产品,正确来说,购买正版的时候代表购买了该软件的使用权,可以享有注册软件,升级软件等服务.下载试用版可在试用期内使用无需收费.官方试用版在30天内是免费的...

中国苹果官网查询序列号(苹果官网查询序列号收费吗)
中国苹果官网查询序列号(苹果官网查询序列号收费吗)

苹果查序列号入口可登陆苹果官网checkcoverage.apple.com进行查询,具体步骤如下:1、打开手机设置,点击“通用”2、进入页面后点击“关于本机”;3、页面跳转后,我们就可以看到本机的序列号了,长按序列号,然后点击“拷贝”4、...

2026-01-15 14:05 liuian

小米手机fastboot是什么意思

手机屏幕上出现fastboot是进入了刷机模式。退出fastboot的方法如下:1、手机桌面显示fastboot。2、我们按下小米手机的电源键,一直不放,大概10秒钟左右。3、等待手机屏幕会变...

苹果手机壁纸2025年新款图片

可以通过以下步骤更换2023最新款锁屏壁纸:1.打开手机,进入手机桌面后,找到“设置”按钮并点击进入。2.在“设置”操作页面中,找到“显示”操作按钮,并点击进入。3.在“显示”操作页面中,找到“...

sandisk(sandisk闪迪)

严格来说,它是家半导体公司,和Intel、Micron这样的公司一样。Kingston和必恩威反而不同,他们是单纯的消费电子品牌,有自己的电子工厂(PCBA),然而核心的存储芯片是购买来的而非自己设...

怎样调出(怎样调出白色颜料)

绿色和红色搭配起来会变成黄色。三原色指色彩中不能再分解的三种基本颜色,通常三原色即红、绿、蓝。三原色可以混合出所有的颜色,同时相加为黑色,黑白灰属于无色系。色彩中颜料调配三原色混合色为黑色,而三原色作...

游戏笔记本电脑性价比排行2025

若是想运行大型游戏,最好选择苹果MacBookPro系列,配置相对高一些。决定游戏运行效果好坏的因素有以下几点:1.CPU。好的电脑,CPU基本上是i5的,也有i7的,还有比这更高的。2.内存。目前...

win10死活进不去安全模式(windows10 进不去安全模式)

方法一:通过进入Win10的高级启动选项的方式启动  1、在您打开电脑开关之后,当屏幕出现下方有小点在转圈的画面,通过拔电源或者拆除笔记本电池的方式强制关机,然后重复该过程两次之后,再开机就会出现恢复...

office2016如何激活(office2016在哪激活)
  • office2016如何激活(office2016在哪激活)
  • office2016如何激活(office2016在哪激活)
  • office2016如何激活(office2016在哪激活)
  • office2016如何激活(office2016在哪激活)
win11系统正版(windows11正式版版本号是多少)

还是正版。具体步骤如下:1.打开win11电脑上的开始按钮,进入设置。2.点击Windows更新。3.点击高级选项。4.选择这里的恢复。5.恢复界面,点击这里的初始化电脑即可恢复出厂设置。需要注意的是...

系统流小说排行榜完本下载(系统流小说2020年排行榜)

带系统的小说有:《修仙带着系统回现代》,《反派女主她迷人又危险》,《全民系统》,《狂暴屠龙系统》,《最强不死系统》,《全能修炼系统》等等合集。超级兑换系统超级修仙超级客栈系统貌似高手在异界重生...