python项目和依赖管理工具uv简介
uv是一个python管理工具的集大成者,一个工具将项目管理、虚拟环境管理、开发工具使用和管理等等集于一身。
这里只是入门简介,更详细的使用方法请参考官方文档。
文章目录
- 项目管理
- 创建项目
- 单文件项目
- 协同
- 环境管理
- 添加依赖
- 运行
- 命令行工具
- 命令行简介
- 配置文件
- 镜像源
项目管理
创建项目
开发的第一步就是创建项目。项目一般由:源代码、编译和构建工具、环境配置、IDE配置、Git配置、流水线配置等等组成。
# 文件夹名称会默认作为项目名称
uv init <dictionary>
python-version
用来指定项目用到的python版本;pyproject.toml
用来描述整个项目,包括依赖、项目名称等。这两个文件是项目运行和虚拟环境管理的关键配置文件。
单文件项目
除了上面这种情况,uv允许将所有项目信息写入py文件中,实现一个文件就是一个项目。
uv init --script <py-file>
# 例如
uv init --script main.py
此时无需创建复杂项目结构也能实现复杂功能。非常适合脚本场景。
协同
当从仓库下载代码或者修改项目配置(如修改.python-version
版本号),需要运行uv sync
这个命令会自动按照配置文件配置本地环境(python版本、依赖包等)。如果本地没有匹配的python版本,则会自动下载对应版本。
环境管理
添加依赖
使用uv
管理依赖时不需要提前激活虚拟环境(如:conda),也不需要不定期的保存requirements.txt
文件。仅仅需要一行命令uv add <package-name>
就可以了(如:uv add requests
)。这个命令会一次性创建虚拟环境、安装依赖、更新项目文件。
运行
使用uv run <py-file>
可以直接运行python脚本。他会自动启动对应虚拟环境,使用环境中的依赖。
命令行工具
开发时会用到一些python编写的工具,如:pytest。使用uv时可以直接使用uv tool install pytest
进行安装。然后就可以直接在命令行使用pytest
。
如果不想安装工具,直接使用,那么可以使用uvx
命令。uvx pytest
可以直接运行pytest
工具,并且不会安装到项目中
命令行简介
uv python
负责python相关命令,如安装指定版本python。
uv venv
用于管理和配置虚拟环境。如设置虚拟环境使用的python版本。
配置文件
镜像源
通过修改pyproject.toml
指定默认镜像源
[[tool.uv.index]]
url = "https://test.pypi.org/simple"
default = true
如果要全局配置,则需要修改~/.config/uv/uv.toml
或者/etc/uv/uv.toml
[[index]]
url = "https://test.pypi.org/simple"
default = true
下面代码演示了如何针对每个包单独设置镜像源
[project]
dependencies = ["torch"][tool.uv.sources]
torch = [{ index = "pytorch-cu118", marker = "sys_platform == 'darwin'"},{ index = "pytorch-cu124", marker = "sys_platform != 'darwin'"},
][[tool.uv.index]]
name = "pytorch-cu118"
url = "https://download.pytorch.org/whl/cu118"[[tool.uv.index]]
name = "pytorch-cu124"
url = "https://download.pytorch.org/whl/cu124"