新一代python版本与依赖管理工具 uv

uv python版本与依赖管理

选择原因

text 复制代码
1. 新的好玩、rust开发的执行速度快
2. 确实方便
3. 轻,软件就十几二十兆,占磁盘小
4. uv.lock可以锁版本

场景应用

场景一

从 anaconda、conda、pipenv等迁移过来

  • 导出依赖列表
shell 复制代码
pip freeze > requirements.txt  # 调整绝对路径的模块
  • 进入项目,初始化环境
shell 复制代码
cd ./你的项目文件
uv init  # 会生成pyproject.tom、uv.lock、.python-version文件
uv run  # 会根据.python-version中的python版本生成 .venv文件,即python虚拟环境
  • 将旧依赖方式同步到pyproject.toml中
shell 复制代码
uv add -r requirements.txt

requirements.txt就可以删除了,以后就通过pyproject.toml来管理

场景二

新建项目

shell 复制代码
mkdir project_name
cd ./project_name
uv init
# 或者 uv init project_name 我更喜欢自己创建文件夹
echo "3.11" > .python-version  # 确定自己的python版本
uv run  # 自定创建python环境

场景三

已有uv项目

shell 复制代码
cd project_name
uv sync  # 根据pyproject.tom、uv.lock自动安装依赖包

常用命令

shell 复制代码
uv init  # 初始化
uv run  # 等同于python
uv add module  # 添加模板
uv add "module==1.*.*"  # 指定版本
uv remove module  # 移除模块
uv sync  # 同步依赖
# 兼容pip
uv pip freeze > requirements.txt
uv pip install module
...

其他命令:https://docs.astral.sh/uv/getting-started/features/

配置全局pip源

shell 复制代码
mkdir -p ~/.config/uv
vim ~/.config/uv/uv.toml

添加一下内容

text 复制代码
[[index]]
url = "https://mirrors.aliyun.com/pypi/simple"
default = true

vscode选择环境

Enter interpreter path...

shell 复制代码
./venv/bin/python  # 没错所有项目用的都是这个路径,就不必要去找了,因为都是项目目录下