python-uv包管理

什么是uv

uv 是由 Astral 团队开发的一个超高速 Python 包管理器,用 Rust 编写,目标是替代 pipvenvpip-toolspoetry 等多个工具。

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 世界的 npxpipx 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

参考资料

【uv】Python迄今最好的项目管理+环境管理工具(吧?)_哔哩哔哩_bilibili

从pip到uv:一口气梳理现代Python项目管理全流程!_哔哩哔哩_bilibili