为什么我现在做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/

相关推荐
啃瓜子的松鼠6 分钟前
泛微OAe9-自定义资源看板
java·后端·sql
漫谈网络8 分钟前
pysnmp 操作流程和模块交互关系的可视化总结
python·pysnmp
钢铁男儿11 分钟前
Python内置类型子类化的陷阱与解决方案
开发语言·前端·python
coding随想25 分钟前
从图书馆到无序仓库:操作系统如何高效管理你的文件
后端
电院工程师32 分钟前
ChipWhisperer教程(三)
笔记·python·嵌入式硬件·安全·fpga开发·安全架构
王中阳Go34 分钟前
2025Java面试八股②(含121道面试题和答案)
java·后端·面试
neoooo34 分钟前
🎯 深入理解:JOIN 中 ON vs WHERE 条件差异
java·后端·mysql
神州问学41 分钟前
AutoGLM沉思版:智能体推理的Deep Research探索
人工智能·python
天天摸鱼的java工程师1 小时前
Java行业现状观察:一二三线城市不同命运下的代码人生
后端
AI小智1 小时前
【LangChain 团队重磅实测报告】多智能体架构揭秘:谁才是性能之王?
后端