使用uv运行python项目
安装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