惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

aimingoo的专栏
aimingoo的专栏
Google DeepMind News
Google DeepMind News
S
SegmentFault 最新的问题
Project Zero
Project Zero
D
DataBreaches.Net
I
InfoQ
L
Lohrmann on Cybersecurity
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
酷 壳 – CoolShell
酷 壳 – CoolShell
Stack Overflow Blog
Stack Overflow Blog
The Register - Security
The Register - Security
Recorded Future
Recorded Future
Vercel News
Vercel News
博客园 - 司徒正美
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
I
Intezer
The Hacker News
The Hacker News
F
Fortinet All Blogs
Microsoft Azure Blog
Microsoft Azure Blog
P
Proofpoint News Feed
Help Net Security
Help Net Security
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Scott Helme
Scott Helme
T
Threatpost
爱范儿
爱范儿
N
Netflix TechBlog - Medium
D
Docker
云风的 BLOG
云风的 BLOG
C
Cisco Blogs
K
Kaspersky official blog
H
Help Net Security
S
Secure Thoughts
T
Threat Research - Cisco Blogs
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
S
Security @ Cisco Blogs
Cyberwarzone
Cyberwarzone
N
News and Events Feed by Topic
G
Google Developers Blog
Forbes - Security
Forbes - Security
博客园 - 三生石上(FineUI控件)
博客园 - 叶小钗
B
Blog
Google DeepMind News
Google DeepMind News
Recent Announcements
Recent Announcements
Simon Willison's Weblog
Simon Willison's Weblog
S
Securelist
P
Privacy International News Feed
Spread Privacy
Spread Privacy
The Last Watchdog
The Last Watchdog

Menghuan1918's Blog

提升浏览器多标签页管理效率 介绍页 友链 My Arch Linux - 外观与字体 使用ray.tune进行自动调整超参数 使用Docker(MinIO)和Caddy创建图床服务 AI系统攻击手段(简要概述) RAG预处理增强:让Fastgpt/Dify召回更多东西 将PDF知识图谱化:graphrag+Doc2X+DeepSeek 如虎添翼:为gpt_academic配置searxng搜索 折腾杂谈:运用Dify+xinference+ollama构建知识库 Ollama跨平台性能比拼:Windows遥遥落后 折腾杂谈:部署一个网页在线状态面板/反代切换到Caddy 笔记软件的最终选择:Obsidian + Self-hosted LiveSync 配置DOSBox以及其窗口大小 在VSCode中配置多平台的C/C++语言支持 折腾杂谈:部署Alist并整合/服务器优化 在Linux上交叉编译出Windows可执行程序 利用MSYS2在windows上配置C/C++/openGL开发环境 强制对游戏应用FSR 折腾杂谈:Docker部署Rustdesk/切换网站框架 Speedometer 3.0分数测试(电子斗蛐蛐) 在Arch Linux下编译32位C程序出错 使用pelican以及nginx建立个人博客
包管理工具UV使用指南:全面替代conda
Menghuan1918 · 2024-06-06 · via Menghuan1918's Blog

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

Linux

mkdir -p ~/miniconda3
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O ~/miniconda3/miniconda.sh
bash ~/miniconda3/miniconda.sh -b -u -p ~/miniconda3
rm -rf ~/miniconda3/miniconda.sh

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

uv

随后安装下uv:

Windows

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

Linux

curl -LsSf https://astral.sh/uv/install.sh | sh

使用前配置

相关信息

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

前面已经提到了,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储存仓找到这个脚本。使用如下命令来加载这个脚本:

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

就这儿
就这儿