Python uv 包的应用

安装

curl -LsSf https://astral.sh/uv/install.sh | sh

brew install uv

新项目启动

# 创建项目
uv init myproject
cd myproject
# 添加依赖
uv add requests pandas numpy matplotlib
# 添加开发工具
uv add pytest black ruff --dev
# 运行代码(自动激活环境)
uv run python user/path/myproject/main.py

docker 部署准备

# 生成 requirements.txt 文件
uv export --format requirements-txt > requirements.txt
# 构建发布包
uv build
# 发布到 pypi
uv publish

团队协作

# 拉代码
git clone https://github.com/username/myproject.git
cd myproject
# 同步依赖
uv sync
# 新增依赖
uv add new-package
# 新增后通知其他成员
git add uv.lock pyproject.toml
git commit -m "add new-package dependency"

常用命令查询

# 快速添加依赖
uv add requests           # 最新版本
uv add "django>=3.2,<4.0" # 指定版本
uv add pytest --dev       # 添加开发依赖

uv add jupyter --group notebook # 分组管理
uv add mysql-connector-python --optional database # 可选依赖

# 环境同步
uv sync       # 同步所有依赖
uv sync --dev # 同步开发依赖
uv sync --group docs --group test # 同步特定组依赖

# python 版本管理
uv python list # 列出所有版本
uv python install 3.10 # 安装指定版本
uv python pin 3.10  # 为项目指定版本
uv python unpin # 取消指定版本
uv python uninstall 3.10 # 卸载指定版本
uv python use 3.10 # 临时切换
uv run --python 3.12 pytest # 指定版本执行
uv run --python 3.10 pytest # 指定版本执行

# 工具安装
uv tool install black ruff jupyter # 安装全局工具
uv tool run black .     # 直接运行工具 无需安装
uv tool run ruff check  # 直接运行工具 无需安装
uv tool list            # 列出所有工具
uv tool upgrade black   # 升级工具
uv tool uninstall black # 卸载工具

# 从 pip + venv 迁移
uv init
uv add -r requirements.txt

# 从 poerty 迁移
uv sync

# 从 pipenv 迁移
pipenv requirements > requirements.txt
uv init
uv add -r requirements.txt
rm Pipfile Pipfile.lock # 清理旧文件

# 清理缓存
uv cache clean

# 重建环境
rm -rf .venv && uv sync

# 查看依赖树
uv tree

# 查看配置
uv --version

# 依赖冲突解决
uv lock --resolution lowest-direct

# 验证环境一致性
uv lock --check

# 强制重新解析
uv lock --upgrade

在现有项目中创建虚拟环境

uv venv --python 3.10.12 .venv-project

uv pip install -r requirements.txt

Pycharm 中的配置

使用 Pycharm 配置 uv 解释器,jetbrains 提供了官方文档:https://www.jetbrains.com/zh-cn/help/pycharm/uv.html

但看下来感觉说的并不是很清楚,下面的 uv env use 依然不知道填什么

project thumbnail

研究后只要执行 uv run python -c "import sys; print(sys.executable)" 代码填入即可