gunhawk

gunhawk

Frontend Developer

Coding is part of my life, 加藤恵は大好き=。=

使用uv运行python项目

作者: gunhawk时间: 2025-03-08python

安装uv

uv安装非常简单, 不同操作系统都只需执行一个命令即可:

# macos/linux
curl -LsSf https://astral.sh/uv/install.sh | sh

# windows
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

安装完, 可以尝试运行

uv -h

看下是否能运行成功, 如果提示说uv没找到, 那么就重新打开终端即可

安装python

uv的命令一般不用太关注python版本, 但如果你有安装python的强迫症, 可以运行

uv python install

如果你想安装某个最新的版本, 还可以指定条件, 如我要安装最新的3.11.x版本

uv python install '>=3.11.0,<3.12.0'

安装项目依赖

由于我还没真正使用uv创建过项目, 这里目前只说明使用requirements.txt描述依赖的项目

uv是使用venv来管理项目的依赖, 所以首次你需要先创建虚拟环境:

uv venv

这样, uv就会用最新的python版本, 在当前的目录创建一个.venv/的文件夹.

当然, 如果需要特定版本的python来运行项目, 则可以加上--python参数, 如我要用3.11.0来运行该项目:

uv venv --python 3.11.0

虽然uv venv能指定虚拟环境目录的位置, 但是建议直接使用默认. 否则等下安装依赖时, 如果uv检测不到虚拟环境的目录, 就会提示你先执行uv venv命令创建.

接着, 就可以使用pip来安装依赖拉, 当然要先通过uv来驱动:

uv pip install -r requirements.txt

你可以看到终端里会并发下载多个依赖, 比传统pip安装要快多了:)

运行项目

如果你是以文件的方式为入口启动(如main.py), 则:

uv run main.py

如果你是以库命令的形式启动(如pytest), 则:

uv run pytest ...

就是如此简单! 再也不用什么切换python版本, 或者先进去虚拟环境再执行命令. 通通以uv为命令, 执行就可以了!

最后再说两句

由于历史原因, python关于项目依赖的管理, 可谓是五花八门, 这给开发者带来各种心智负担. uv的出现, 以高性能语言rust作为底层驱动, 我觉得完全可以让python的依赖管理走向大统一(像nodejs, npm本来也可以统一的, 但是由于性能问题也导致五花八门的包管理如yarn, pnpm). 工具的目的不就是为了解放人类么, 凡是增加心智负担的东西我们都应该坚决抵制:P