从conda转uv快速上手
【需要有conda使用基础】
uv 是用 Rust 编写的,它的包解析和安装速度通常比 Conda 或传统的 pip 快几十倍甚至上百倍。
在习惯了 Conda 工作流的前提下,使用 uv 其实非常简单。
conda和uv最大的区别
- Conda是全局中心化的。 也就是运行
conda create -n myenv,这个环境会保存在 Anaconda 的安装目录下。无论你在哪个项目中,都可以conda activate myenv。 - uv默认是项目本地化的。 当使用
uv venv时,它会在当前的文件夹里创建一个名为.venv的隐藏文件夹。这和 Python 标准的venv是一样的,好处是环境和项目代码绑定,不容易和别的项目冲突。
卸载Anaconda
(win)直接找uninstall.exe
(linux)略
安装uv
windows
powershell
1 | |
linux(..)
bash
1 | |
验证安装
关掉刚刚的命令行窗口,再重新打开一个
1 | |
输出版本号就代表装好了
重装python
由于之前把anaconda卸载了,机器上没有python环境,打开vscode会弹出这个东西:
点击安装python
使用uv
创建虚拟环境
在终端里,在项目根目录下,输入:
1 | |
也可以不指定python版本
这相当于conda create
激活虚拟环境
windows
1 | |
linux(。。)
1 | |
相当于conda activate
激活后,前面会显示.venv或者你的项目名
安装依赖包
1 | |
Conda vs uv 完全等效命令速查表
| 命令 | Conda 命令 | uv 命令 |
|---|---|---|
| 安装特定的 Python 版本 | (包含在 create 中) | uv python install 3.10 |
| 创建新环境 | conda create -n myenv python=3.10 |
uv venv --python 3.10(在当前目录生成 .venv 文件夹) |
| 激活环境 | conda activate myenv |
source .venv/bin/activate(Linux).venv\Scripts\activate(Windows) |
| 安装包 | conda install numpy |
uv pip install numpy |
| 卸载包 | conda remove numpy |
uv pip uninstall numpy |
| 查看已安装的包 | conda list |
uv pip list |
| 导出环境依赖 | conda env export > environment.yml |
uv pip freeze > requirements.txt |
| 根据文件创建环境 | conda env create -f environment.yml |
uv pip install -r requirements.txt |
【重点】uv进阶用法
conda里面是deactivate,uv里面也是deactivate
但是“必须先激活、用完再退出”是Conda的全局环境管理思维!!(跟你们安卓思维讲不通.jpg)
咱uv是“基于工作目录自动感知”的管理思维:只要当前目录(或上级目录)里有个 .venv 文件夹,所有的 uv 命令就会极其听话地只对这个环境生效,绝不乱动系统的 Python。
1. 丝滑包管理
完全不需要激活环境,只要在 .venv 同级目录:
uv pip install pandas:直接把包精准装进当前的.venv里。uv pip list:直接查看当前环境装了什么包。uv pip tree:(强烈推荐!) 这个命令会把你当前环境的包以“依赖树”的形态打印出来。比如你在搞大模型微调,看transformers或flash-attn的底层依赖版本,一目了然。uv pip freeze > requirements.txt:一键导出当前环境的依赖。
2. 万物皆可 uv run
uv run <script>.py:直接在当前项目环境下运行脚本。uv run python:直接进入当前虚拟环境的 Python 交互模式(REPL)。uv run jupyter lab:(核心重点!)uv会自动用.venv里的 Python 启动 Jupyter。连配置内核那两步都省了,打开网页默认就是当前环境。uv run pytest:直接运行当前环境下的单元测试。
3. 一次性“阅后即焚”环境
假设随便从网上 copy 了一段代码,它需要用到 matplotlib 和 seaborn 画图,但你不想把这俩包塞进你目前干干净净的主环境里。
uv run --with matplotlib,seaborn test_memory.pyuv会在极其隐蔽的系统缓存里,瞬间(真的是毫秒级)建一个临时环境,装上这俩包,跑完你的代码出完图,然后直接把环境扬了,不留一丝痕迹。主.venv依然干干净净。
4. 极速环境管理
uv venv:在当前目录下瞬间创建一个纯净的.venv。速度比python -m venv或者conda create快几十倍。uv python install 3.10:如果你的项目需要特定的 Python 版本,直接敲这个。uv会自己去下载 Python 3.10,不需要你再去 Linux 系统里折腾 apt 编译安装了。
FAQ
VS Code 找不到正确 venv /静态分析失效
VS Code右下角找不到Python环境和解释器,导致静态分析失效?
项目套项目会导致这个问题,左边资源管理器打开项目根目录即可。
方法1:VS Code左上角文件 → 打开文件夹
方法2:终端载入项目根目录,输入code .
终端里conda环境套uv环境
有时候打开终端,第一行自动弹出
1 | |
终端自动给我开了一个conda环境,又自动开了venv。输入conda deactivate把conda环境关掉是正确的,但是每次都手动关一下很烦。
终端输入以下内容即可
1 | |
这样就把自动激活conda环境关掉了