跳至主要內容

包管理工具UV使用指南:全面替代conda

Menghuan1918大约 4 分钟

UV,作为新一代的,性能极佳的Python的包安装器和解析器,其网上中文教程却寥寥无几...

由于其目前并不支持自行下载多版本的Python,这篇文章记录下我借用conda的多版本Python支持,与uv结合,使得能实际使用中完全替代conda。

也算半个UV使用教程了把(大概)。

你可以直接看到对比:以gpt_academic为例一节,其能说明所有的折腾都是值得的。

安装

miniconda3

首先安装下miniconda,其作用是提供多个版本的Python给uv使用,而不是真的要用conda,好消息是不管在Linux上还是Windows上都可以很方便的安装。

miniconda你可以看为是Anaconda的精简版,仅带有其命令行。

Windows
winget install --id=Anaconda.Miniconda3 -e 

随后使用conda init 你用的命令行工具进行初始化,例如conda init bash。当然你也可以直接conda init --all全都给初始化。

uv

随后安装下uv:

Windows
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"

使用前配置

相关信息

如果你打算用我创建的uvv工具open in new window,你可以忽略这两节。

前面已经提到了,uv的虚拟环境并不像conda一样能提供多版本的Python。不过其可以借用conda的python。因此我们创建几个conda环境(为了给uv提供不同版本的python)。我常用的Python版本是3.93.113.12,因此我创建了对应的环境:

conda create -n 9 python=3.9
conda create -n 11 python=3.11
conda create -n 12 python=3.12
就像这样
就像这样

随后设置取消自动激活conda环境,这是因为这会与uv虚拟环境冲突:

conda config --set auto_activate_base false

随后就让我们进入实战环节吧。

如何替换conda

例如,我有一个项目需要使用Python 3.11版本,依赖储存于requirements.txt中,要运行main.py

那么如果我们使用conda,一般其流程是:

conda create -n gptac_venv python=3.11
conda activate gptac_venv
python -m pip install -r requirements.txt
python main.py

而如果我们使用uv的话,其流程就是:

conda activate 11
uv venv --seed -p 3.11
conda deactivate
uv pip install -r requirements.txt
source ./.venv/bin/activate
python main.py

注意

注意上文中的conda deactivate,不要同时激活uv虚拟环境和conda虚拟环境!

在VSCode中使用

就和正常的venv虚拟环境一样使用。

如果你还想使用ipynb,建议自己先安装内核uv pip install jupyter

就这样
就这样

对比:以gpt_academic为例

gpt_academic也算是一个依赖众多的项目了,这儿对比下uv和pip的速度。这个过程中网速并不是限制因素(校园网没抽风,下载速度都是80Mb/S起步):

对比
对比

正如其所说的,确实快了数十倍(37.24s vs 4.122s)。

而当一个包在同版本Python的环境中安装过一次时,uv就能使用其缓存进行加速安装了,非常高速高效(41.066s vs 2.075s)!

高速
高速

这是因为uv会使用全局的缓存,只要在全局范围内安装过的包再安装就会起飞一样安装完成。

使用上的优化

这样的uv还是在每个文件夹创建.venv文件夹,还是得找一个办法和conda一样能全局使用才方便。

于是为了真正达到替换conda的效果,我编写了一些脚本来替换,你可以在这个GitHub储存仓open in new window找到这个脚本。使用如下命令来加载这个脚本:

git clone https://github.com/Menghuan1918/uvv
cd uvv
sh Install.sh

使用上几乎只需要将conda替换为uvv即可,例如以上文的例子:

uvv create -n gpt -p 3.11
uvv activate gpt
uvv install -r requirements.txt
注意看右侧的python环境激活标志
注意看右侧的python环境激活标志

不过在VSCode中你需要手动选择一下...好在其会记忆这个位置,不会每次都要重选一下。

例如这儿我创建的是名为gpt的环境,我需要手动选择下环境位置为:

/home/menghuan_go/.venv/gpt/bin/python

就这儿
就这儿