为什么我现在做Python项目都用UV?你看完就懂了

我最近常用一个Python项目包管理工具,名字就俏,叫 UV ,它多少有点像Rust社区的Cargo,但专门给Python用的。说白了,它是一个"全家桶"式的升级,全面替代 pipvirtualenvpipxpyenvpoetry......一套给你整干净。

你可能会想:咱们Python怎么突然冒出个包项目管理"一体机"?但你只要试一次,你就知道官方说的10~100倍速度,是真的快 ⚡️------这是因为它Rust底层写的,效率杠杠的 。


官宣重点来了------UV官方亮点

我照着官方页面列了几个关键点:

  • 🚀 一个工具取代 pippip-toolspipxpoetrypyenvvirtualenv......全覆盖。
  • ⚡️ 安装速度快到 10--100 倍!
  • 🗂️ 支持统一锁文件(uv.lock),实现不同平台一致。
  • ❇️ 可以直接运行脚本,支持内嵌依赖声明。
  • 🐍 管理 Python 版本:装3.10~3.12没压力。
  • 🛠️ 安装并运行Python CLI工具,比如 ruffpycowsay
  • 🔩 CLI 跟 pip 接口兼容,用习惯 pip 的可以续写。
  • 🏢 支持类似 Cargo workspace 的多项目模式。
  • 💾 强大的全局缓存,节省磁盘空间。
  • ⏬ 安装方式多样:curl、pip、Homebrew......没有Rust也能装。
  • 🖥️ 跨平台,macOS/Linux/Windows 都行。

第一步:安装 UV

Mac和Linux直接执行以下命令:

bash 复制代码
curl -LsSf https://astral.sh/uv/install.sh | sh
# 装完你就多了个 uv 命令

windows系统执行以下命令:

bash 复制代码
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

注意:windows下要在powershell下执行上面的命令,可恶的是杀毒软件会报病毒,直接点允许即可

安装完毕以后在终端执行

bash 复制代码
vu -V

能看到版本号说明就装好了。


第二步:创建并管理虚拟环境

有些人问:"uv 会不会跟 venv 冲突?"

不会。它自己带虚拟环境功能 ,还能自动识别 .venv 文件夹。也就是说:

bash 复制代码
uv venv

一行就能给你在当前目录创建 .venv/ 虚拟环境。

然后呢,不用你去 activate 环境,它直接会识别 .venv 来执行命令。也就是说你用:

bash 复制代码
uv run python script.py

就能运行脚本,等效于 source activate + python,省事很多。


第三步:项目初始化(就是初始化 pyproject.toml)

你如果准备新开一个项目,建议先初始化:

bash 复制代码
uv init

它会帮你自动生成 pyproject.toml,内容非常干净清爽,而且官方推荐格式,未来兼容性很好。

生成后pyproject.toml结构大概是这样:

toml 复制代码
[project]
name = "uv-test"
version = "0.1.0"
description = "Add your description here"
readme = "README.md"
requires-python = ">=3.13"
dependencies = []

然后就可以愉快地添加依赖了,比如安装tushare库:

bash 复制代码
uv add tushare

它会自动修改 pyproject.toml 并生成 uv.lock 锁文件。锁文件这个功能真的很赞,不同操作系统装出来的依赖版本也能保持一致,很适合多人协作。


第四步:同步依赖(尤其适合团队协作)

比如你从 Git 拉了个项目,有现成的 pyproject.tomluv.lock,你就可以用:

bash 复制代码
uv sync

一键同步所有依赖,不需要管版本,自动创建虚拟环境、自动装依赖,一把梭。

这跟以前你要手动 pip install,指定版本、创建 venv 完全不是一个体验。


第五步:运行脚本(甚至支持脚本内写依赖)

这个功能我一开始真觉得有点离谱,后来用了觉得香。

你写一个脚本文件,在头部加注释:

python 复制代码
# uv: requests rich

import requests
import rich
print("hello world")

然后你在命令行运行它:

bash 复制代码
uv run myscript.py

UV 会自动识别注释里的依赖,如果没装就自动帮你建虚拟环境、装依赖,然后运行脚本。

说真的,这功能对于写临时脚本、测试、共享代码,简直就是神仙操作 🎉


第六步:管理 Python 版本

你不需要再装 pyenv,UV 内置了 Python 版本管理:

bash 复制代码
uv python install 3.12
uv python pin 3.12

pin 是啥意思?就是这个项目默认用 3.12,不用每次切环境再指定版本了,每个项目可以绑定自己的 Python 版本,干净、稳定。


第七步:替代 pipx 安装 CLI 工具

比如你想用 ruffhttpie 这些命令行工具:

bash 复制代码
uv tool install ruff
ruff myfile.py

它会用专属环境装好,完全不污染你的主 Python 环境,和 pipx 一个理念,但是用起来更舒服。还支持更新、卸载、列出等常见操作。


最后:UV 值不值得学?

我觉得,如果你已经厌倦了这些场景👇:

  • pip install 等半天
  • venv 激活又忘了
  • pipx 和 pyenv 安装麻烦
  • poetry 版本冲突看不懂
  • requirements.txt 改起来头疼

那 UV 会让你眼前一亮,它简化了整个生态,又兼容旧习惯,真的是能用起来的实用工具。


彩蛋:一键执行所有操作示例

给你看一眼我从零到能跑起来的完整流程:

bash 复制代码
# 安装 uv
curl -LsSf https://astral.sh/uv/install.sh | sh

# 新建项目
mkdir demo && cd demo

# 初始化项目
uv init

# 创建虚拟环境
uv venv

# 添加依赖
uv add requests pandas

# 运行脚本
uv run myscript.py

一套流程下来,稳,干净,不脏不乱不绕路。


如果你试了觉得好用,记得也告诉你同事朋友------让他们早点脱离 pip 地狱

更多内容可以参考UV官方网站https://docs.astral.sh/uv/

相关推荐
叠层归一研究院4 分钟前
如何用程序搭建一个 AGI 种子系统(一):从向量种子到无限生长引擎
人工智能·python·算法·机器学习·agi
水深火乐12 分钟前
安全地生成验证码、密码和 Token
后端
小强198824 分钟前
SQL Server 慢查询怎么定位?一套从“卡”到“快”的完整排查流程
后端
水深火乐26 分钟前
interface和any
后端
步行cgn27 分钟前
MyBatis Error evaluating expression ‘ids‘. Return value (3) was not iterable 错误详
java·后端
神奇小汤圆30 分钟前
Spring Boot + LangChain4j实现RAG——从零搭建企业级知识库问答系统
后端
H_Peak34 分钟前
Python运算符与流程控制:if条件判断
后端
H_Peak36 分钟前
Python字符串操作:从基础到正则入门
后端
自进化Agent智能体37 分钟前
Hermes 子代理委派 —— 并行工作的艺术
后端
步行cgn40 分钟前
MyBatis 动态 SQL 中的 <foreach> 标签完全解析
后端