【实用工具】uv使用指南
引言
- 入职一个月,感受到科研与工程界的巨大差异,做科研时写的屎山⛰️代码主打一个能跑起来就行,写一大堆脚本,把算法实现了就行。
- 而到了工业界,新的集群、新的项目、新的模式,感觉自己还有很多需要学习!
- 今天就从现代的Python包管理器uv开始,规范自己的代码,树立软件工程的思想,重拾本科死去的前端、后端、数据库、计算机网络…
预备知识
1. venv
- venv 是 Python 自带 的一个虚拟环境管理工具,用于创建一套独立的 Python 解释器及其包管理环境。
- 简单用法:
python -m venv .venv会在当前目录下创建一个.venv的文件夹,里面包含里面包含独立的 Python 解释器和 pip- 使用
source .venv/bin/activate可以激活并使用当前环境 - 使用
pip install在当前环境下安装包
2. pyproject.toml
pyproject.toml是 Python 官方推荐 的项目配置文件格式,它的作用是:统一管理项目的构建配置、依赖信息和元数据。pyproject.toml中定义了项目名称、版本、作者、项目依赖(类似 requirements.txt,但更标准)等pyproject.toml示例:1
2
3
4
5
6
7
8
9
10
11
12
13[project]
name = "my-awesome-project"
version = "0.1.0"
description = "这是一个示例项目"
authors = [{ name = "Tianle", email = "[email protected]" }]
dependencies = [
"pydantic_ai>=0.2.0",
"requests"
]
[build-system]
requires = ["uv"]
build-backend = "uv.build"
uv介绍
uv是对pip和venv的高级封装,有了uv,就可以自动化地管理Python版本、项目依赖、虚拟环境和python项目的打包
基本用法
uv的安装
1 | curl -LsSf https://astral.sh/uv/install.sh | sh |
📌 python版本管理
列出uv支持安装的 Python 版本
1
uv python list
安装 Python
1
2# uv python install <实现名><版本号>
uv python install cpython3.12 # CPython 是最常用、最主流的 Python 实现使用特定版本运行脚本
1
uv run -p 3.12 xxx.py
进入一个基于 Python 3.12 的 REPL(交互式解释器)
1
uv run -p 3.12 python
🛠️ 项目与依赖管理
初始化项目
1
uv init
添加依赖包:添加 flask 到当前项目中,自动写入 pyproject.toml 并安装依赖。
1
uv add flask
移除依赖
1
uv remove flask
查看依赖树
1
uv tree
构建当前 Python 项目的whl包
1
uv build
安装工具(工具不同于项目依赖,是全局可以调用的命令,它不会写入 pyproject.toml 的依赖里)
1
uv tool install ruff
拿到别人的项目后自动搭建环境并安装依赖
1
uv sync
在虚拟环境的上下文中运行程序,运行完后会自动退出
1
uv run main.py
在自己调试项目时,可以使用可编辑模式安装依赖,这样你在源代码里做改动,代码立刻生效,无需重新安装
1
pip install -e . # -e表示使用可编辑模式(editable mode)安装
uv对比conda
⚖️ 功能对比
功能 uv conda 包管理 ✅ Python 包(基于 pyproject.toml)✅ Python 包 + C/C++ 库 Python 版本管理 ✅(带版本下载与切换) ✅(环境中内置不同版本) 创建虚拟环境 ✅ 自动创建 ✅ 使用 conda create环境隔离 ✅ 支持 ✅ 支持 非 Python 库支持(如 libxml, OpenCV) ❌ 不支持 ✅ 支持 依赖安装速度 🚀 极快(用 Rust 写) 较快,但依赖解析慢一些 是否标准工具 ✅ 标准 PEP 支持(pyproject.toml) ❌ 非官方格式,生态封闭 🎯 使用建议:uv vs conda
使用场景 推荐工具 普通 Python 项目,依赖纯 Python 包 ✅ uv 科研/机器学习项目,需要依赖 C/C++ 编译库 ✅ conda 追求安装速度、现代生态、标准格式 ✅ uv 多语言混合项目、包含 R/C/FORTRAN 等 ✅ conda
✅ 推荐:一个项目只使用其中一个工具,不要混用 uv 和 conda。
拓展阅读
评论

