python:Mac 系统 uv 完整安装+入门实战

一、uv 是什么

Astral(Ruff 同团队)基于 Rust 开发,单二进制文件 ,一套工具直接平替:

pyenv + pip + venv + pipx + poetry + isort + flake8

主打极速依赖解析、内置Python版本管理、严格遵循PEP621标准,是目前Python新项目首选工程化工具。

二、Mac 三种安装方式(推荐顺序)

方式1:官方一键脚本(最推荐,自带自更新)

无需提前装Homebrew、Python,直接终端执行:

bash 复制代码
curl -LsSf https://astral.sh/uv/install.sh | sh

安装后关闭终端重新打开 ,环境变量自动写入zsh配置。

验证安装:

bash 复制代码
uv --version
uvx --version

后续升级:

bash 复制代码
uv self update

如果提示 command not found,手动补PATH:

bash 复制代码
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc

方式2:Homebrew 安装(brew 用户首选)

bash 复制代码
brew install uv
# 更新
brew upgrade uv

Apple Silicon M系列 brew 路径:/opt/homebrew/bin,Intel:/usr/local/bin。

方式3:pipx 隔离安装

适合不想改系统PATH的场景:

bash 复制代码
python3 -m pip install --user pipx
python3 -m pipx ensurepath
pipx install uv

三、国内镜像加速(必配,解决下载慢)

终端执行配置阿里云PyPI源:

bash 复制代码
uv pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/
# 额外加清华源备用
uv pip config set global.extra-index-url https://pypi.tuna.tsinghua.edu.cn/simple

四、核心基础用法(从0新建项目)

1. 初始化项目

bash 复制代码
# 创建项目文件夹+pyproject.toml
uv init demo-project
cd demo-project

2. 管理Python解释器(替代pyenv)

bash 复制代码
# 查看可安装版本
uv python list
# 安装指定Python版本
uv python install 3.11
# 项目锁定使用3.11
uv python pin 3.11

3. 依赖管理(核心命令)

bash 复制代码
# 安装正式依赖
uv add requests pandas

# 安装开发依赖(ruff、pytest)
uv add --dev ruff pytest

# 一键安装所有依赖并生成uv.lock锁文件、自动创建.venv虚拟环境
uv sync

# 删除依赖
uv remove requests

# 查看依赖树
uv tree

# 升级全部依赖
uv lock --upgrade
# 单独升级某个包
uv lock --upgrade-package pandas

4. 运行代码(自动调用虚拟环境)

bash 复制代码
# 直接执行py文件
uv run main.py

# 进入虚拟环境终端
source .venv/bin/activate
# 退出
deactivate

5. 全局工具安装(替代pipx)

bash 复制代码
# 全局装ruff,任意目录可用
uv tool install ruff
# 升级全局工具
uv tool upgrade ruff

五、uv + Ruff 黄金组合(一键规范+格式化)

1. 项目内安装Ruff

bash 复制代码
uv add --dev ruff

2. 项目根目录 pyproject.toml 完整配置

toml 复制代码
[project]
name = "demo-project"
version = "0.1.0"
dependencies = []
requires-python = ">=3.11"

[project.optional-dependencies]
dev = [
  "ruff>=0.6.0",
  "pytest>=7.0",
]

# Ruff 代码检查+格式化配置
[tool.ruff]
target-version = "py311"
line-length = 100
exclude = [".venv", "__pycache__", "build", "dist"]

[tool.ruff.lint]
select = [
  "E", "W", "F",   # flake8 基础规范
  "I",             # isort 导入排序
  "UP",            # pyupgrade 语法升级
  "B",             # 常见bug检测
  "C4",            # 列表推导优化
]
fix = true  # 自动修复可修正问题

[tool.ruff.format]
quote-style = "double"
indent-style = "space"
line-ending = "auto"

3. 常用Ruff指令

bash 复制代码
# 代码检查并自动修复
uv run ruff check . --fix
# 全盘格式化代码
uv run ruff format .

六、VS Code 搭配 uv 环境

  1. VS Code 打开项目,左下角选择解释器
  2. 选中项目内 .venv/bin/python
  3. 安装 Ruff VSCode 插件,保存自动格式化+实时报错提示。

七、老项目迁移适配

1. 从 requirements.txt 迁移

bash 复制代码
uv add -r requirements.txt
uv sync

2. 从 Poetry 项目迁移

uv 可直接读取 pyproject.toml + poetry.lock

bash 复制代码
uv sync
# 生成标准uv.lock,后续完全使用uv管理

八、打包发布到PyPI

bash 复制代码
# 构建wheel+sdist包
uv build
# 上传至pypi
uv publish

九、常用高频命令速查表

功能 命令
初始化项目 uv init
安装依赖 uv add xxx
安装开发依赖 uv add --dev xxx
同步环境 uv sync
运行脚本 uv run xxx
安装Python uv python install 3.11
锁定Python版本 uv python pin 3.11
更新uv本体 uv self update
全局安装工具 uv tool install xxx

十、常见踩坑说明

  1. M系列Mac 终端权限问题:首次安装允许终端访问网络即可;
  2. 切换终端(zsh/bash):脚本会自动识别写入对应配置文件,无需手动改;
  3. 不想生成.venv:执行 uv sync --no-venv 直接使用系统Python。

官方参考文档

uv 中文文档:https://uv.doczh.com/

uv 英文官网:https://docs.astral.sh/uv/

三者极简关系(Poetry / pipx / uv)

  1. pipx = 只干全局工具安装这一件小事
  2. Poetry = 项目管理 + 打包发库
  3. uv = 同时干完 Poetry + pipx + pyenv + pip 所有功能
  • 你可以用 pipx 去安装 Poetry,这是官方推荐的标准姿势;
  • 但不能用 Poetry 去替代 pipx;
  • 装了 uv 之后,uv tool 替代 pipx,uv sync/add 替代 Poetry,两个工具都可以不再安装。
相关推荐
M--Y6 小时前
LangGraph 工作流模式
开发语言·javascript·python·langchain·大模型·llm·langgraph
岁月宁静7 小时前
DeepSeek Harness 实战与架构解析:让 Agent 从“会聊”到“能交付”
人工智能·python·agent
LiaoWL1237 小时前
NumPy 入门实战(二):向量化与余弦相似度——从 ndarray 到 Embedding
python·numpy·embedding
forest_097 小时前
多 Agent 协作第二课:交叉验证≠独立验证
人工智能·python·算法·机器学习·prompt·agi
databook11 小时前
时间序列数据,先拆规律还是先查异常
python·数据挖掘·数据分析
师夷长技以自愈11 小时前
手搓 AI Agent 第 8 篇:从手写循环到画流程图——LangGraph 封装
人工智能·python
aifannihao12 小时前
Rust 1.100 的 DropGuard:用 Python 实测失败回滚与吞异常
python·rust·异常处理·标准库·contextlib
用户0190275816114 小时前
天勤 tqsdk 能做 A 股行情吗?期货强项与股票数据选型
python
2601_9679791215 小时前
pip在Python中的9个必须知道的用法
python·pip·版本控制·包管理工具·requirements.txt
曲径海盗15 小时前
【Python 学习第 58 天】列表方法
python·学习笔记·编程入门