UV使用
UV使用
1.初始化
可以直接到项目所在文件夹下进行初始化,保证不同的项目下不同的环境。
1 | uv init |
2.指定python版本
查看可用的 Python 版本
1 | uv python list |
安装指定 Python 版本
1 | uv python install 3.12 |
创建项目指定版本
1 | uv python pin 3.12 |
添加依赖
1 | uv add flask |
移除依赖
1 | uv remove flask |
查看项目的依赖树
1 | uv tree |
3.pytoch-gpu安装
pytorch 不同的平台不同的分发规则,可以配置安装不同的 torch 版本,windows 版本安装 cpu 版本的 torch,linux 版本安装 cuda 11.4 版本的 torch。
1 | [project] |
4.uv lock
确定一个可复现的、满足项目需求的完整依赖树,并将这个确定的状态“锁定”下来,记录应该安装什么。
5.uv sync
实际安装/更新/卸载包以匹配记录的状态。
6.创建虚拟环境:uv venv
在开始安装包之前,通常需要创建一个独立的 Python 环境,以避免项目之间的依赖冲突。uv venv
命令用于此目的。
1 | uv venv |
这个命令会在当前目录下创建一个名为 .venv
的文件夹(这是社区推荐的虚拟环境名称),并在其中设置一个新的 Python 环境。
详细解释: uv venv
会查找系统中可用的 Python 解释器,并复制或创建指向必要文件的链接,构建一个隔离的环境。在这个环境中安装的包不会影响到系统全局或其他项目的 Python 环境。与 python -m venv
相比,uv venv
通常快很多,尤其是在创建大量虚拟环境时。
除了在当前目录创建默认的 .venv
环境外,uv venv
还提供了更灵活的选项:
- 指定虚拟环境的名称或路径: 你可以在命令后面加上一个路径,来指定虚拟环境的创建位置和名称。这允许你在项目的不同位置创建环境,或者给环境一个自定义的名字。
1 | # 在当前目录下创建一个名为 my-project-env 的虚拟环境 |
- 指定 Python 版本: 如果你的系统中安装了多个 Python 版本,并且你希望为这个虚拟环境指定一个特定的 Python 版本(例如 Python 3.9),你可以使用
--python
选项。uv
会在你的系统环境中查找符合指定版本要求的 Python 解释器来创建环境。
1 | # 使用系统中的 Python 3.9 创建虚拟环境 (uv 会尝试查找 python3.9, python3 等) |
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 服务器:
1 | $ uv run --with jupyter jupyter lab |
默认情况下, jupyter lab
将启动服务器 http://localhost:8888/lab 。
8. 运行脚本
uv中执行脚本的启动命令为:
1 | uv run xxx |
uv run
的执行逻辑为: 1. 检查当前目录中是否存在 .venv
目录,若不存在则创建新环境 2. 验证环境是否包含脚本所需依赖,如果缺失依赖则自动安装 3. 在当前的虚拟环境中执行命令,不会与其他环境产生冲突
以下是uv启动命令与常规Python启动命令的对比:
执行命令 | 环境处理 |
---|---|
uv run xxx | 自动关联虚拟环境: - 优先使用当前目录下的 .venv - 若不存在会自动创建 - 无需手动激活/停用 |
python xxx.py | 依赖当前Shell环境: - 需手动激活虚拟环境 |
参考:
Python 包管理工具 uv 使用教程 - 知乎
uv — Using uv with PyTorch