UV使用
1.初始化
可以直接到项目所在文件夹下进行初始化,保证不同的项目下不同的环境。
uv init
2.指定python版本
查看可用的 Python 版本
uv python list
安装指定 Python 版本
uv python install 3.12
创建项目指定版本
uv python pin 3.12
uv init
添加依赖
uv add flask
移除依赖
uv remove flask
查看项目的依赖树
uv tree
3.pytoch-gpu安装
pytorch 不同的平台不同的分发规则,可以配置安装不同的 torch 版本,windows 版本安装 cpu 版本的 torch,linux 版本安装 cuda 11.4 版本的 torch。
[project]
name = "project"
version = "0.1.0"
requires-python = ">=3.12.0"
dependencies = [
"torch>=2.6.0",
]
[tool.uv.sources]
torch = [
{ index = "pytorch-cpu", marker = "sys_platform != 'linux'" },
{ index = "pytorch-cu124", marker = "sys_platform == 'linux'" },
]
[[tool.uv.index]]
name = "pytorch-cpu"
url = "https://pypi.tuna.tsinghua.edu.cn/simple"
explicit = true
[[tool.uv.index]]
name = "pytorch-cu124"
url = "https://mirror.sjtu.edu.cn/pytorch-wheels/cu124"
explicit = true
4.uv lock
确定一个可复现的、满足项目需求的完整依赖树,并将这个确定的状态“锁定”下来,记录应该安装什么。
5.uv sync
实际安装/更新/卸载包以匹配记录的状态。
6.创建虚拟环境:uv venv
在开始安装包之前,通常需要创建一个独立的 Python 环境,以避免项目之间的依赖冲突。uv venv 命令用于此目的。
uv venv
这个命令会在当前目录下创建一个名为 .venv 的文件夹(这是社区推荐的虚拟环境名称),并在其中设置一个新的 Python 环境。
详细解释: uv venv 会查找系统中可用的 Python 解释器,并复制或创建指向必要文件的链接,构建一个隔离的环境。在这个环境中安装的包不会影响到系统全局或其他项目的 Python 环境。与 python -m venv 相比,uv venv 通常快很多,尤其是在创建大量虚拟环境时。
除了在当前目录创建默认的 .venv 环境外,uv venv 还提供了更灵活的选项:
- 指定虚拟环境的名称或路径: 你可以在命令后面加上一个路径,来指定虚拟环境的创建位置和名称。这允许你在项目的不同位置创建环境,或者给环境一个自定义的名字。
# 在当前目录下创建一个名为 my-project-env 的虚拟环境
uv venv my-project-env
# 在指定的路径下创建一个虚拟环境 (例如,在用户主目录下的 .venvs 文件夹中)
uv venv ~/.venvs/another-env
- 指定 Python 版本: 如果你的系统中安装了多个 Python 版本,并且你希望为这个虚拟环境指定一个特定的 Python 版本(例如 Python 3.9),你可以使用
--python选项。uv会在你的系统环境中查找符合指定版本要求的 Python 解释器来创建环境。
# 使用系统中的 Python 3.9 创建虚拟环境 (uv 会尝试查找 python3.9, python3 等)
uv venv --python 3.9 .venv
# 同时指定环境名称和 Python 版本
uv venv my-env --python 3.10
uv 在查找 Python 解释器时非常智能,你可以指定主版本号 (3.9),也可以指定次版本号 (3.9.10),甚至可以使用可执行文件的名称 (python3.9)。
激活环境: 创建环境后,你需要激活它才能使用其中安装的包。激活环境的方式取决于你使用的 shell:
- Bash/Zsh:
source .venv/bin/activate - Fish:
source .venv/bin/activate.fish - Nushell:
source .venv/bin/activate.nu - PowerShell:
. .venv\Scripts\Activate.ps1 - Cmd:
.venv\Scripts\activate.bat
激活环境后,你的终端提示符前通常会显示环境的名称(如 (.venv)),并且此时运行 python 或 pip 等命令时,使用的是虚拟环境中的版本。
7.Jupyter
如果正在项目中工作,则可以通过以下方式启动可以访问项目虚拟环境的 Jupyter 服务器:
$ uv run --with jupyter jupyter lab
默认情况下, jupyter lab 将启动服务器 http://localhost:8888/lab 。
8. 运行脚本
uv中执行脚本的启动命令为:
uv run xxx
uv run 的执行逻辑为: 1. 检查当前目录中是否存在 .venv目录,若不存在则创建新环境 2. 验证环境是否包含脚本所需依赖,如果缺失依赖则自动安装 3. 在当前的虚拟环境中执行命令,不会与其他环境产生冲突
以下是uv启动命令与常规Python启动命令的对比:
| 执行命令 | 环境处理 |
|---|---|
| uv run xxx | 自动关联虚拟环境: - 优先使用当前目录下的 .venv - 若不存在会自动创建 - 无需手动激活/停用 |
| python xxx.py | 依赖当前Shell环境: - 需手动激活虚拟环境 |