【python】uv管理器
uv是一个速度极快的 Python 包和项目管理器,用 Rust 编写。
安装
安装uv之前,确保你的电脑不需要安装了python
在Windows下,可以使用官方的脚本直接安装
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
在Linux下使用如下命令安装
curl -LsSf https://astral.sh/uv/install.sh | sh
uv的下载没有进度条,所以卡住了大概率是网络的问题,请自行解决。
后续将使用基于WSL的Ubuntu 22.04.5 LTS
以及uv 0.7.9
演示,这里说下网络问题。以下方法适用于 Windows 11 22H2 和 WSL 2.0.5 及以上版本:
- 在你的“网络优化软件”中启用“局域网连接”,代理模式选择http(默认一般是这个)
- 搜索
WSL Settings
,网络模式改为Mirrored
使用wget google.com
验证:
但是ping是ping不过去的,别想了,此外,每次将系统代理关掉都需要重启WSL(否则WSL将无法联网)。而且WSL无法使用Linux的reboot
命令,而是需要在主机中执行:
wsl --shutdown
然后重新访问WSL,就重启成功了。
uv python
uv和conda一样,可以对安装的python进行管理。比如我在安装uv之前,电脑上就已经有python了,这时执行uv python list
,就会看到我安装的python:
这样就可以安装某个特定版本的python:
uv python install 3.12
uv与项目
使用如下命令初始化一个名为uv_test
的python项目:
uv init uv_test
UV 将创建以下文件:
.
├── .python-version
├── README.md
├── main.py
└── pyproject.toml
使用如下命令运行:
uv run main.py
uv运行时会自动创建一个.venv
虚拟环境,类似官方的venv
完整的列表如下所示:
.
├── .venv
│ ├── bin
│ ├── lib
│ └── pyvenv.cfg
├── .python-version
├── README.md
├── main.py
├── pyproject.toml
└── uv.lock
pyproject.toml
包含有关项目的元数据:
[project]
name = "uv-test"
version = "0.1.0"
description = "Add your description here"
readme = "README.md"
requires-python = ">=3.10"
dependencies = []
与官方的管理文件格式一致(我都不知道python还有这玩意。。。),Python从PEP 518开始引入的使用pyproject.toml管理项目元数据的方案,具体可以看python官方的介绍:https://packaging.python.org/en/latest/guides/writing-pyproject-toml/
uv不会读取pip的配置,所以要单独设置镜像地址。可以在配置文件里指明镜像地址。以阿里云源为例子,在上述文件追加如下内容:
[[tool.uv.index]]
url = "https://mirrors.aliyun.com/pypi/simple/"
default = true
以requests
库为例,使用如下命令安装:
uv add requests
会自动从镜像下载安装:
还可以指定版本约束或替代源:
# Specify a version constraint
uv add 'requests==2.31.0'# Add a git dependency
uv add git+https://github.com/psf/requests# 临时从某个镜像安装
uv add --default-index https://pypi.tuna.tsinghua.edu.cn/simple requests
要删除包,可以使用 :uv remove
uv remove requests
.python-version
该文件包含项目的默认 Python 版本。此文件告诉 uv 使用哪个 Python 版本。
.venv
该文件夹包含项目的虚拟环境,即 Python 环境,即 与系统的其余部分隔离。这是 uv 将安装项目依赖项的位置。
uv.lock
uv.lock是一个跨平台的 lockfile,其中包含有关项目的 依赖。与 which 不同,它用于指定 project 中,lockfile 包含项目中安装的确切解析版本 环境。此文件应签入版本控制中,以实现一致且 跨计算机可重复安装。
uv.lock是人类可读的 TOML 文件,但由 uv 管理,不应手动编辑。
使用如下命令构建发行版:
uv build
默认情况下,将在当前目录中构建项目,并将构建的文件放在子目录dist/