python-uv包管理
什么是uv
uv 是由 Astral
团队开发的一个超高速 Python 包管理器,用
Rust 编写,目标是替代
pip、venv、pip-tools、poetry
等多个工具。
uv常用命令
uv init myproj 创建新项目
source .venv/bin/activate(Linux/macOS)激活虚拟环境
uv add requests 安装依赖并写入 pyproject.toml
uv remove requests 移除依赖
uv sync 同步依赖到虚拟环境
uv export 导出 lock 文件为 requirements.txt 等格式
uv build 构建源码包和 wheel
uv publish 发布到 PyPI
uvx是什么
uvx 是:
uv tool run 的快捷别名(alias),用于无需安装即可运行 Python 包提供的命令行工具。
uvx 就像 Python 世界的 npx
或 pipx run ——
临时拉取、构建隔离环境、运行工具,用完即走,不留痕迹。
uv管理命令行工具
使用uv tool
- 用途:安装、管理、运行全局可用的 Python 命令行工具。
- 安装位置:默认安装到
~/.local/bin(Windows:C:\Users\<USER>\.local\bin)。
1 | uv tool install pytest |
安装后可以直接使用pytest而不用uv run pytest
uv sync和uv pip install -e .的区别
✅ uv pip install -e .
- 作用:将当前项目以可编辑模式安装到当前 Python 环境。
- 行为:
- 读取
pyproject.toml中的[project]元数据。 - 构建并安装你的主包(如
my_package),使其可被import。 - 不会自动安装依赖(除非你显式加上
--deps,但通常不这么做)。
- 读取
- 典型用途:开发自己的包时,让本地代码可导入。
✅ uv sync
- 作用:根据锁定文件(如
uv.lock)精确同步整个项目的依赖环境。 - 行为:
- 读取
uv.lock(由uv lock生成)或pyproject.toml。 - 安装所有依赖项(包括直接依赖和传递依赖)到当前环境。
- 默认也会以可编辑模式安装当前项目(如果
pyproject.toml中定义了项目)。 - 确保环境状态与锁定文件完全一致(版本、哈希、来源等)。
- 读取
- 前提:通常需要先运行
uv lock生成uv.lock。