如何换源

全局配置

方法: 修改 ~/.config/uv/uv.toml

  1. 腾讯源

    1
    
    index-url = "https://mirrors.cloud.tencent.com/pypi/simple" # 腾讯源
  2. 清华源

    1
    
    index-url = "https://pypi.tuna.tsinghua.edu.cn/simple"
  3. 华为源

    1
    
    index-url = "https://repo.huaweicloud.com/repository/pypi/simple"

项目内配置

配置文件 pyproject.toml

1
2
3
4
5
6
7
8
9
# 影响 uv add, uv sync, uv run
[[tool.uv.index]]
url = "https://test.pypi.org/simple"
default = true


# 影响 uv pip install ... (即 pip 本身被 uv 调用的情况)
[tool.uv.pip]
index-url = "https://test.pypi.org/simple"

初始化 uv init

uv init –python $(which python)

作用: 决定使用的 python 版本,但是不会把 $(which python) 所在的环境当作默认环境

依赖和安装 package

uv add

作用: 安装 package ,并更新 pyproject.toml 和 uv.lock

uv add --active

添加 package 到激活的环境中

uv pip install

作用: 跳过 uv 的依赖管理机制,直接使用 pip 安装到当前环境中

要点:

  1. 不更新 pyproject.toml 的依赖管理

uv tree 依赖列举

作用: 类似 pdm list –graph(–tree)

使用 .venv 以外的 python / venv

注意:

  1. uv 不能真的支持 通过别的工具创建的 venv
  2. 即便激活的别的 venv, eg: conda, python -m venv; uv 也不会使用这些 python, 而是作为 uv init / uv install / uv tree 等的参考

    • 但是

      1. uv init 不会使用 –python 指定的 venv 作为默认环境,而只是作为 python version 的参考
      2. uv add

使用环境变量 UV_PROJECT_ENVIRONMENT

使用 UV_PROJECT_ENVIRONMENT 环境变量指定实际使用的虚拟环境的路径

注意:

  1. 如何指定的路径已经创建了一个环境,不是通过 uv 创建的, uv 默认会删除它,并重新创建一个

--pythonUSE_PYTHON

使用 –python 参数

  1. uv add --python $(which python)
  2. uv tree --python $(which python)

使用环境变量

  1. USE_PYTHON : python 的绝对路径

uv sync

安装依赖

--active

是否使用已经激活的环境(即非 .venv 以外的已经激活的其他 python venv)

指定 venv 目录

1
VIRTUAL_ENV=/venv uv sync --no-dev --link-mode=copy --index-url https://repo.huaweicloud.com/repository/pypi/simple
  • VIRTUAL_ENV=/venv + --active

    • 注意: –active 和 ViRTUAL_ENV 两个都需要
  • 无效方法:

    • –python 这个是用来创建 venv 使用的 python 路径

uv + pytorch

参考:

例子: linux + pytorch + cuda118

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
[project]
name = "project"
version = "0.1.0"
requires-python = ">=3.12.0"
dependencies = [
  "torch>=2.7.0",
  "torchvision>=0.22.0",
]

[tool.uv.sources]
torch = [
  { index = "pytorch-cpu", marker = "sys_platform != 'linux'" },
  { index = "pytorch-cu118", marker = "sys_platform == 'linux'" },
]
torchvision = [
  { index = "pytorch-cpu", marker = "sys_platform != 'linux'" },
  { index = "pytorch-cu118", marker = "sys_platform == 'linux'" },
]

[[tool.uv.index]]
name = "pytorch-cpu"
url = "https://download.pytorch.org/whl/cpu"
explicit = true

[[tool.uv.index]]
name = "pytorch-cu118"
url = "https://download.pytorch.org/whl/cu118"
explicit = true
  • { index = "pytorch-cu118", marker = "sys_platform == 'linux'" }

    • 通过 marker 限定不同 platform 使用不同的 index