Skip to content

Commit 3729e85

Browse files
committed
update
1 parent 3c1dc9c commit 3729e85

File tree

2 files changed

+220
-1
lines changed

2 files changed

+220
-1
lines changed

工具链篇/包的安装与管理.ipynb

Lines changed: 113 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -250,6 +250,118 @@
250250
"\n",
251251
"而删除包就和pip有所不同了,它使用的是`conda remove <pkgname>`命令.\n"
252252
]
253+
},
254+
{
255+
"cell_type": "markdown",
256+
"id": "0bd8d363-04ed-41f3-ae8e-4542a7429d5c",
257+
"metadata": {},
258+
"source": [
259+
"## `*`uv包管理工具\n",
260+
"\n",
261+
"[uv](https://github.com/astral-sh/uv)是一个新晋的python包管理+环境管理工具,为本就混乱的python包管理生态又添了一把火.它的卖点主要是快,号称是用rust写的,比传统的pip方式快10~100倍.\n",
262+
"\n",
263+
"这个快不快的在我看来并不关键,它的主要优势是相比conda一套,它轻量级的多,而相比传统的venv+pip,它可以独立的管理python版本.这一特性让他非常适合用来给应用构造python环境,比如现在很多ai工具整合包就很适合用它来管理python相关依赖.\n",
264+
"\n",
265+
"### 安装与卸载\n",
266+
"\n",
267+
"`uv`的一大优势就是安装与卸载都可以完全不依赖gui\n",
268+
"\n",
269+
"> 安装(需翻墙)\n",
270+
"\n",
271+
"+ macos/linux\n",
272+
"\n",
273+
" ```bash\n",
274+
" curl -LsSf https://astral.sh/uv/install.sh | sh\n",
275+
" ```\n",
276+
"\n",
277+
"+ windows\n",
278+
" \n",
279+
" ``````powershell\n",
280+
" powershell -ExecutionPolicy ByPass -c \"irm https://astral.sh/uv/install.ps1 | iex\"\n",
281+
" ```\n",
282+
"\n",
283+
"> 更新\n",
284+
"\n",
285+
"```bash\n",
286+
"uv self update\n",
287+
"```\n",
288+
"\n",
289+
"> 卸载\n",
290+
"\n",
291+
"+ macos/linux\n",
292+
"\n",
293+
" ```bash\n",
294+
" # 可选,清空原有的\n",
295+
" uv cache clean\n",
296+
" rm -r \"$(uv python dir)\"\n",
297+
" rm -r \"$(uv tool dir)\"\n",
298+
" # 删除uv命令行工具\n",
299+
" rm ~/.local/bin/uv ~/.local/bin/uvx\n",
300+
" ```\n",
301+
"\n",
302+
"+ windows\n",
303+
"\n",
304+
" ```powershell\n",
305+
" # 可选,清空原有的\n",
306+
" uv cache clean\n",
307+
" rm -r \"$(uv python dir)\"\n",
308+
" rm -r \"$(uv tool dir)\"\n",
309+
" # 删除uv命令行工具\n",
310+
" rm $HOME\\.local\\bin\\uv.exe\n",
311+
" rm $HOME\\.local\\bin\\uvx.exe\n",
312+
" ```\n",
313+
"\n",
314+
"### python版本管理\n",
315+
"\n",
316+
"uv的python管理还是比较人性化的,简单总结就是\n",
317+
"\n",
318+
"1. 如果指定版本已存在就用已经存在的\n",
319+
"2. 如果没有可以现安装(安装包会被放在`UV_PYTHON_INSTALL_DIR`,默认位置为`~/.local/share/uv/python/`)\n",
320+
"\n",
321+
"> 列出被管理的python版本和对应位置\n",
322+
" \n",
323+
"```bash\n",
324+
"uv python list\n",
325+
"```\n",
326+
"\n",
327+
"> 查找最符合版本要求的python版本\n",
328+
"\n",
329+
"```bash\n",
330+
"uv python find <版本号>\n",
331+
"```\n",
332+
"\n",
333+
"> 安装指定版本的python\n",
334+
"\n",
335+
"```bash\n",
336+
"uv python install <版本号>\n",
337+
"```\n",
338+
"\n",
339+
"uv也支持删除指定版本,但这里并不推荐,如果一定要删除,建议只删除使用uv安装的python版本,千万不要乱动系统级别的python\n",
340+
"\n",
341+
"### 虚拟环境管理\n",
342+
"\n",
343+
"uv更常用的应该还是它的虚拟环境功能.你只需要指定python版本,它就会给你弄个虚拟环境\n",
344+
"\n",
345+
"```bash\n",
346+
"uv venv [虚拟环境目录] --python <版本号>\n",
347+
"```\n",
348+
"\n",
349+
"如果这个python的版本已经存在,它会直接拿来创建虚拟环境;如果并不存在,那它会先下载安装符合要求的版本然后给你再创建虚拟环境.\n",
350+
"\n",
351+
"如果不指定虚拟环境目录,它默认会将目录定在`.venv`.\n",
352+
"\n",
353+
"激活和取消激活和使用`python -m venv`创建的虚拟环境完全一样,就是用`source 虚拟环境目录/bin/activate`即可\n",
354+
"\n",
355+
"### python依赖管理\n",
356+
"\n",
357+
"uv管理python依赖命令上和pip几乎一样,就是前面加个`uv`就好,比如`uv pip list`就是列出环境中的所有包.\n",
358+
"\n",
359+
"### 常见用法\n",
360+
"\n",
361+
"uv我个人理解更多的是用来管理python版本的.`uv venv`很好用,让我们不必花心思校验系统中是否有对应版本的python.但至于其他的个人认为没必要太关注.\n",
362+
"\n",
363+
"\n"
364+
]
253365
}
254366
],
255367
"metadata": {
@@ -268,7 +380,7 @@
268380
"name": "python",
269381
"nbconvert_exporter": "python",
270382
"pygments_lexer": "ipython3",
271-
"version": "3.10.12"
383+
"version": "3.11.11"
272384
}
273385
},
274386
"nbformat": 4,

工具链篇/包的安装与管理.md

Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -220,3 +220,110 @@ proxy=http://127.0.0.1:7890
220220

221221
而删除包就和pip有所不同了,它使用的是`conda remove <pkgname>`命令.
222222

223+
224+
## `*`uv包管理工具
225+
226+
[uv](https://github.com/astral-sh/uv)是一个新晋的python包管理+环境管理工具,为本就混乱的python包管理生态又添了一把火.它的卖点主要是快,号称是用rust写的,比传统的pip方式快10~100倍.
227+
228+
这个快不快的在我看来并不关键,它的主要优势是相比conda一套,它轻量级的多,而相比传统的venv+pip,它可以独立的管理python版本.这一特性让他非常适合用来给应用构造python环境,比如现在很多ai工具整合包就很适合用它来管理python相关依赖.
229+
230+
### 安装与卸载
231+
232+
`uv`的一大优势就是安装与卸载都可以完全不依赖gui
233+
234+
> 安装(需翻墙)
235+
236+
+ macos/linux
237+
238+
```bash
239+
curl -LsSf https://astral.sh/uv/install.sh | sh
240+
```
241+
242+
+ windows
243+
244+
``````powershell
245+
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
246+
```
247+
248+
> 更新
249+
250+
```bash
251+
uv self update
252+
```
253+
254+
> 卸载
255+
256+
+ macos/linux
257+
258+
```bash
259+
# 可选,清空原有的
260+
uv cache clean
261+
rm -r "$(uv python dir)"
262+
rm -r "$(uv tool dir)"
263+
# 删除uv命令行工具
264+
rm ~/.local/bin/uv ~/.local/bin/uvx
265+
```
266+
267+
+ windows
268+
269+
```powershell
270+
# 可选,清空原有的
271+
uv cache clean
272+
rm -r "$(uv python dir)"
273+
rm -r "$(uv tool dir)"
274+
# 删除uv命令行工具
275+
rm $HOME\.local\bin\uv.exe
276+
rm $HOME\.local\bin\uvx.exe
277+
```
278+
279+
### python版本管理
280+
281+
uv的python管理还是比较人性化的,简单总结就是
282+
283+
1. 如果指定版本已存在就用已经存在的
284+
2. 如果没有可以现安装(安装包会被放在`UV_PYTHON_INSTALL_DIR`,默认位置为`~/.local/share/uv/python/`)
285+
286+
> 列出被管理的python版本和对应位置
287+
288+
```bash
289+
uv python list
290+
```
291+
292+
> 查找最符合版本要求的python版本
293+
294+
```bash
295+
uv python find <版本号>
296+
```
297+
298+
> 安装指定版本的python
299+
300+
```bash
301+
uv python install <版本号>
302+
```
303+
304+
uv也支持删除指定版本,但这里并不推荐,如果一定要删除,建议只删除使用uv安装的python版本,千万不要乱动系统级别的python
305+
306+
### 虚拟环境管理
307+
308+
uv更常用的应该还是它的虚拟环境功能.你只需要指定python版本,它就会给你弄个虚拟环境
309+
310+
```bash
311+
uv venv [虚拟环境目录] --python <版本号>
312+
```
313+
314+
如果这个python的版本已经存在,它会直接拿来创建虚拟环境;如果并不存在,那它会先下载安装符合要求的版本然后给你再创建虚拟环境.
315+
316+
如果不指定虚拟环境目录,它默认会将目录定在`.venv`.
317+
318+
激活和取消激活和使用`python -m venv`创建的虚拟环境完全一样,就是用`source 虚拟环境目录/bin/activate`即可
319+
320+
### python依赖管理
321+
322+
uv管理python依赖命令上和pip几乎一样,就是前面加个`uv`就好,比如`uv pip list`就是列出环境中的所有包.
323+
324+
### 常见用法
325+
326+
uv我个人理解更多的是用来管理python版本的.`uv venv`很好用,让我们不必花心思校验系统中是否有对应版本的python.但至于其他的个人认为没必要太关注.
327+
328+
329+

0 commit comments

Comments
 (0)