上期我们搞定了 WSL 的基础配置,有了一个干净好用的 Linux 终端。接下来就要开始干活了!搞 Python 开发,最头疼的就是环境管理:virtualenv 速度慢,conda 体积庞大,pyenv 编译 Python 动辄卡死……
今天给大家介绍一款能让你“爽到飞起”的现代化 Python 包管理器——uv。本期我们将通过简介、安装、常用语法和实战案例,带你彻底掌握如何在 WSL 下用 uv 轻松管理不同项目的 Python 环境。
uv 是由开发著名 Python Linter 工具 Ruff 的团队 Astral 使用 Rust 语言编写的一款极速 Python 包管理器。
它的核心优势:
极速:比传统的 pip 和 pip-tools 快 10-100 倍,得益于 Rust 和硬链接/缓存机制,安装依赖几乎瞬间完成。
全能:它集成了 Python 版本管理(类似 pyenv)、虚拟环境管理(类似 venv)和包管理(类似 pip/poetry),一个工具搞定一切。
兼容:支持标准的 pyproject.toml,并且兼容 pip 的语法,迁移成本极低。
在 WSL 中开发 Python 项目时,常见的问题有:
uv vs conda vs poetry vs pip
在 WSL 终端中,只需一行命令即可完成安装:
curl -LsSf https://astral.sh/uv/install.sh | sh
安装指定版本Python
创建配置目录、文件并编辑全局配置文件
mkdir -p ~/.config/uv && nano ~/.config/uv/uv.toml
粘贴以下配置内容【alt + Shift + V】
# 全局默认索引(PyPI 镜像)[[index]]name = "default"url = "https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple"default = true# 额外索引:阿里云(备用)[[index]]name = "aliyun"url = "https://mirrors.aliyun.com/pypi/simple"
然后 Ctrl + O 保存,Enter确认,Ctrl + X退出
在深入实战之前,先理解 uv 的几个核心概念:
1. 初始化项目
mkdir my-project && cd my-projectuv init
指定特定版本的 Python
安装配置深度学习环境
uv add numpy pandas scipy matplotlib torch torchvision torchaudio
安装完成后,你可以运行 uv run python -c "import torch; print(torch.cuda.is_available())"。如果返回 True,说明基于 CUDA 12 的深度学习环境已经打通。
相同的道理,可以安装地学类的包。
执行Python文件
注意到,下面的 python main.py报错了,这是在调用 Ubuntu 系统全局的 Python。但因为 Ubuntu 刚装好,系统里甚至连 python 这个软链接都没配(系统里可能只有 python3),更不用说里面有你刚安的库了。
使用 uv run python main.py 成功了,因为 uv run 会自动把运行环境切换到你项目的 .venv 内部。以后在终端里运行任何脚本,都在前面加上 uv run。
如果你觉得每次都敲 uv run 太麻烦,想直接用 python main.py,你需要先“进入”这个虚拟环境:
source .venv/bin/activate
激活后,你的终端提示符前面会多一个 (.venv) 的标记。这时候你再输入 python main.py 就能正常运行了。想退出时,输入 deactivate 即可。
如果项目已经包含 pyproject.toml 和 uv.lock:
# 1. 克隆项目git clone git@github.com:xxx/project.gitcd project# 2. 同步安装所有依赖(自动创建 .venv)uv sync# 3. 运行测试uv run pytest
如果项目只有 requirements.txt,也可以一键转换:
# 从 requirements.txt 生成 pyproject.toml 和 uv.lockuv pip freeze > requirements.txt # 已有的话跳过uv inituv add $(cat requirements.txt)
用过 uv 之后,真的很难再回到传统的 pip + venv 时代了。它在 WSL 下的丝滑体验,加上 Rust 带来的极致速度,极大提升了 Python 开发者的幸福感。而且它生成的 pyproject.toml 和 uv.lock 也非常适合团队协作和代码仓库管理。
后面,我们将介绍如何使用 VScode 连接 WSL 进行本地端的开发。