Skip to content
Porter 的流水账
Go back

uv 笔记

Updated:

写在开头的话 —— 在 AI 时代做笔记还有意义吗?单纯从收集信息的角度讲已经没有意义了,但是作为汇集以自己喜欢的结构和方式来组织的知识体系还是很有意义的!忘记的时候不需要临时查,也不需要以特定的 prompt 来让 AI 以你喜欢的方式来重新组织内容。而且这种特有结构的笔记适合持续迭代和增补,多少有那么点儿拿 blog 当 wiki 用的意思。

谁创造了 uv?

成立于 2022 年的 Astral,创始人是 Charlie Marsh,是一家专注于高性能 Python 开发者工具的公司。2026 年 3 月宣布加入了 OpenAI。

什么是 uv?uv 的定位

一个用 Rust 实现的、高性能的、可以替代 pip, pip-tools, pipx, poetry, pyenv, twine, virtualenv 等工具的单一工具。

安装和使用

在 macOS 上安装

brew install uv

无需虚拟环境直接运行独立脚本

# uv 会自动安装稳定版的 Python 并运行指定脚本
uv run example.py

# 也可以单独指定 Python 版本
uv run --python 3.11 hello.py

# 或者带着特定的库运行一个 Python 脚本(不会在当前目录创建虚拟环境)
uv run --with requests python test.py

用 uv 安装和管理多个版本的 Python

# 安装 Python 3.14.4
uv python install 3.14.4

# 确保 versioned executables 所在目录进入 PATH
uv python update-shell

# 列出可用的 Python 版本
uv python list

# 在当前目录这个 scope 下使用 Python 3.14.4(会在当前目录下生成 .python-version,但不会生成虚拟环境)
# 只会影响 `uv python` 和 `uv venv` 使用的版本。可以用 `uv run python -c "import sys; print(sys.version)"` 验证。
uv python pin 3.14.4

# 全局使用 Python 3.12
uv python pin 3.12 --global

用 uv 创建和管理虚拟环境(传统工作流——除非有 requirements.txt,否则环境里装过哪些库其他人并不清楚)

# 用当前环境的 Python 版本来创建虚拟环境(会在当前目录下创建 .venv 目录)
uv venv

# 虚拟环境可以不激活直接使用,也可以用 source .venv/bin/activate 激活后使用
uv run example.py

# 给当前的虚拟环境安装包
uv pip install requests

用 uv 来创建和管理 Python 项目(新的 Project 工作流——pyproject.toml 里记录了所有需要的库,环境可复现)

# 创建一个 myproj 目录,并在里面初始化一个 Python 项目(会创建 pyproject.toml)。也可以 uv init 把当前目录初始化成 Python 项目
uv init myproj

# 初始化时可以指定 Python 版本
uv init --python 3.14 myproj

# 给项目添加库(如果此时还没有虚拟环境的话,会创建 .venv 和 uv.lock)
uv add requests

# 删除依赖
uv remove requests

# 以 uv.lock 为蓝本,同步虚拟环境
uv sync

Share this post on:

Previous Post
用 Whisper.cpp 做 ASR
Next Post
在 Mac mini 上使用 Rapid-MLX 本地运行 Qwen 大模型