uv - 一个现代化的项目+环境管理工具
参考: 【uv】Python迄今最好的项目管理+环境管理工具(吧?)_哔哩哔哩_bilibili
项目需求
想象,每次创建一个项目的时候,我们需要去写 README. md, .git 仓库, .gitignore,你会感觉很头大
对于 conda 而言,安装速度慢,让人头疼,而 uv 基于 rust 实现,速度快的飞起:
对于虚拟环境而言,我们想要导出我们的环境配置,则需要每次都用到 pip freeze > requirement.txt
,这无疑很麻烦,而使用 uv 则只需要对方给你同步 pyproject. toml 即可
使用方法
Installation: pip install uv
初始化项目:uv init my_project
初始化后我们可以发现默认创建了几个文件:
.python-version
是指定的 python 版本pyproject.toml
包含了项目元数据,以及要用到的环境依赖
管理环境
管理 python 版本:
下载 python 版本: uv python install python_version
E.g. uv python install 3.8 3.11
切换 python 版本: uv python pin python_version
E.g. 切换到 3.11 版本 uv python pin 3.11
添加依赖:
uv add package_name
运行项目:
uv run main.py
同步环境:
uv sync
E.g. 一个简单的添加 requests 依赖并运行的 demo
有时候,我们想要临时运行一个程序,又不想放到环境中,则在命令后加个 x,即是 uvx
:
E.g. uvx pytest
有时候,我们只拿到了源码,但是没有给出 requirments 文件,同时我们又不想这时候我们可以使用 uv init --script filename.py
这个参数 :
uv 会在文件首生成一些 metadata,我们在其中指定好我们的依赖:
然后再执行 uv run main.py
就可以正常执行了,同时也不会创建虚拟环境
管理命令行工具
有时候,我们用到的一些工具可能是全局使用的,比如 pytest
,这时候我们不想为单独的虚拟环境添加这个包,所以我们应该在全局上安装:
uv tool install package_name
比如安装 pytest: uv tool install pytest
卸载: uv tool uninstall package_name
安装好后 不用加 uv 前缀,直接使用包即可: