[tools] uv

add ". dev " packages uv add optional dev seaborn 比如 uv add optional dev jupyterlab nbdev jupyter copilot when install, use pip install e ". dev " sync with dev uv sync extra dev 会

add ".[dev]" packages

uv add --optional dev seaborn

比如

uv add --optional dev jupyterlab nbdev jupyter_copilot

when install, use

pip install -e ".[dev]"

sync with dev

uv sync --extra dev

会同时安装project.dependencies,project.optional-dependencies,和tool.uv.dev-dependencies

如果要更新到最新版

uv sync -U --extra dev

nbdev

不用 sync,用

uv pip install -e ".[dev]"

update packages

uv sync -U
  • uv lock -U 只更新 uv.lock 会重新解析到更新的版本,但不会安装到当前 .venv
  • uv sync -U 等价于 uv sync --upgrade 会先更新 lockfile,再把环境同步到新版本 也就是同时做了“升级 + 安装”

如果想把 pyproject.toml 里的下限也抬高到当前最新,可以直接:

uv add pandas@latest numpy@latest seaborn@latest 

uv cache clean

会clean .cache文件夹里面的东西。

往往有一些wheels, model weights之类的

1.2G .cache/pip
2.8G .cache/uv
1.5G .cache/huggingface
600M .cache/torch
200M .cache/matplotlib

删掉并不影响。uv sync -U 之后正常运行。

uv run 会detect pyproject.toml

如果已经激活某个环境,然后进入到subfolder,想要uv run,如果subfolder有pyproject.toml会报错。

因为uv run的时候会自动detect当前dir的pyproject.toml

这个时候删掉pyproject.toml文件即可。

自动activate

nano ~/.bashrc

在里面添加

alias love="source .venv/bin/activate 2>/dev/null || echo 'No .venv found in this directory.'"

ctrl+O 保存,ctrl+X退出

新开一个terminal,输入指令即可。

注意

在uv env里不代表就可以不用uv ...了,它只是提供了python + pip, 并不是在一个环境里,还是需要uv run...

source .venv/bin/activate

# Regular pip (slow)
pip install -r requirements.txt

# Fast pip (uses uv logic)
uv pip install -r requirements.txt

# Regular run
python main.py

# Faster subprocess-aware run
uv run python main.py

specify python version

uv venv --python=python3.12
source .venv/bin/activate
uv pip install -e ".[dev]"

安装uv

curl -Ls https://astral.sh/uv/install.sh | bash
source ~/.bashrc
uv

self update

uv self update

uv + nbdev

ubuntu里

cd folder
uv venv --python=python3.12 # 如果folder里没有.venv文件
uv pip install -e '.[dev]' # 生成uv.lock文件
uv pip install jupyterlab
source .venv/bin/activate # 激活当前的env
uv run jupyter lab
# 打开jupyter lab 就可以工作了

# 还可以
uv sync # 会根据项目中的 pyproject.toml 和(如果存在的话)uv.lock 文件,把虚拟环境安装得和这些配置一致,
# 但如果是 editable version的话,建议用uv pip install -e, 因为uv sync会把当前package直接安装

需要安装什么在外面的ubuntu terminal安装即可

uv pip install git+gitlink

basics

uv venv

单纯创建一个环境,相当于uv init + uv run main.py,但是只生成一个.venv文件夹

环境名称和当前文件夹的名称是一样的。

环境激活:

source .venv/bin/activate

uv init

创建一个新的folder

uv init hello

会创建这几个文件

添加图片注释,不超过 140 字(可选)

uv run main.py

cd hello
uv run main.py

会生成一个uv.lock (最下面那行) 和一个.venv文件夹

linux系统里生成的.venv 文件夹和uv.lock

ubuntu/linux系统里生成的.venv 和windows系统里生成的不太一样

windows里的长这样,有Lib 和Scripts

添加图片注释,不超过 140 字(可选)

两者不能互换,linux里激活不了这个windows里的.venv,反之亦然。

激活环境

linux里:

source .venv/bin/activate #注意前面加source

添加图片注释,不超过 140 字(可选)

windows里:

.venv\Scripts\activate #注意不是/ 是\ 后划线

添加图片注释,不超过 140 字(可选)

激活完环境可以直接python main.py 而不用 uv run main.py

取消环境

deactivate即可

防止pip在别的环境里安装

export PYTHONNOUSERSITE=1

#然后再
pip install package

uv add package

可以往pyproject.toml里添加package

uv add requests # 最新版
uv add 'requests==2.31.0' # 指定版本
uv add git+https://github.com/psf/requests # git package

如果当前的.venv 和 目录下的.venv不一致,会以目录下的.venv为准来安装,主要是在目录下寻找pyproject.toml然后添加package

uv pip install package

和add package比,这个是临时的,不会添加到pyproject.toml里,但会放在uv.lock里

用现成的pyproject.toml生成环境

比如有下面这个结构

添加图片注释,不超过 140 字(可选)

sync可以生成环境

uv sync

uv sync也会包括 dev packages.

uv build

生成一个dist文件夹,里面是安装文件包

添加图片注释,不超过 140 字(可选)

reference