Astral团队:https://astral.sh/ uv官网文档:https://docs.astral.sh/uv/ ruff官方文档:https://docs.astral.sh/ruff/ ty官方文档:https://docs.astral.sh/ty/

官网定义uv是一个:非常快的Python package and projecte manager(包和项目管理器)。可以理解成一个Python项目的一站式管家

从文档里也没看出为什么叫uv,可能和键盘手指按键有关,uv 这两个字母刚好 一个在j的上面,一个在f的下面,而字母jf是键盘手指定位建,按键上一般都有一个小凸起,供食指感受。你可能会说,那干脆叫jf得了,但和uv的组合相比,jf一个字母下突出,一个字母上突出,不如uv整体协调。当然,这只是我的猜测,具体为啥,得看作者怎么说了。

Window下安装后,会同时安装uvuvxuvw,这3个名字,也很有趣

mindmap
    root((uv))
        project
            environmets
            dependencies
            lockfiles
            workspaces
            packaging
                building
                publishing
        scripts
            environments
            dependencies
        tool
            uvx 
            uv tool run
        python version
        pip interface
        venv manager

可以分成3部分

treemap-beta
"Package manager(包管理)"
    "Project"
    "Script"
"Tool run(工具运行)"
"Python enhance(python增强)"
    "python version manager(Python版本管理)"
    "pip interface(pip命令扩展)"
    "venv manager(环境管理)"

0x01. Package manager(包管理)

这里的包指 一个python项目最终构建的包,也指 一个 python单独文件构成的模块

1. project(项目)

指一个python项目,最终通过构建工具生成一个whl包。uv提供了一套命令,支持从项目的创建 => 项目的环境管理 => 项目的打包 => 项目包的发布 全功能的支持

命令列表

命令 说明
uv init project_name 初始化一个项目
uv add pakcage_name 添加一个依赖的包
uv remove package_name 移除一个依赖的包
uv lock --upgrade-package pakcage_name 升级一个依赖包到最新
uv version --short 查看包的版本信息
uv run command_name 运行一个命令
uv sync 更新一个项目的环境,并激活该环境
uv build 构建一个可发布的whl包

uv将项目大致分为3类 1. application project(应用类项目):不打包直接运行的项目 2. packaged application project(打包类应用项目):以命令行、GUI界面的方式启动的项目 3. library project(Lib项目):提供通用的依赖库

应用类项目的项目结构如下:

.
├── .venv
│   ├── bin
│   ├── lib
│   └── pyvenv.cfg
├── .python-version
├── README.md
├── main.py
├── pyproject.toml
└── uv.lock

直接以uv run main.py的方式运行

打包的应用类项目Lib类项目的项目结构如下:

.
├── .venv
│   ├── bin
│   ├── lib
│   └── pyvenv.cfg
├── .python-version
├── README.md
├── pyproject.toml
└── uv.lock

这2种项目的区别在pyproject.toml文件中,前者有启动入口配置,后者没有该配置

参考官网:基于项目的使用

0x03. Python enhance(Python增强)

1. python version manager(版本管理)

一个版本的python,比如3.13,其中包含python解释器standard library(标准库文件)other supprting files(其他支持文件)

uv可以在系统上管理多个Python version,它可以自动检测系统已经安装的Python,也可以支持下载 指定版本的Python

需要注意的一点是,uv是从 Astral python-build-standalone project里下载的Python虚拟机。按uv官网说法是,Python官网没有提供Python的可直接安装的虚拟机文件,但Python官网确实提供了download下载页面,里面也有Python虚拟机,参见Python官网下载 ,这个目前不知道uv官网为啥这么说

命令列表

命令 说明
uv pyton list 查看已经安装的Python
uv python find 查询安装的python版本,默认找到第一个
uv python install 3.13 3.12 安装Python的3.13 和 3.12版本
uv python install --reinstall 重新安装Python版本
uv python upgrade 3.12 将python3.12升级到最新支持的功能,也就是12版本的最新小版本
uv python pin 创建一个.python-version文件
uv python dir 查看python的安装目录

安装命令将会在~/.local/bin目录下创建一个可执行的python启动入口,允许我们在命令行中直接调用python

如果~/.local/bin不在系统的环境变量中,可以使用uv tool update-shell命令来进行更新

可以使用uv python dir命令来查看python的安装目录,默认是在~/.local/share/uv/python目录下

可以通过配置环境更改uv的默认工作目录,如下:

UV_PYTHON_INSTALL_DIR = /opt/uv/share/python

参考官网:python版本管理