Mise + UV 管理 Python

  • ~2.64K 字
  1. 1. 说明
  2. 2. 1️⃣ 部署:安装 mise 与 uv
    1. 2.1. 1.1 安装(推荐 Homebrew)
    2. 2.2. 1.2 让 mise 接管 shell(非常关键)
  3. 3. 2️⃣ 全局:用 mise 管理 Python 版本
    1. 3.1. 2.1 安装指定 Python 版本
    2. 3.2. 2.2 设置全局默认 Python
  4. 4. 3️⃣ 项目级 Python:.mise.toml
    1. 4.1. 3.1 在项目中固定 Python 版本
    2. 4.2. 3.2 启用 Python venv 自动管理(强烈推荐)
  5. 5. 4️⃣ uv:依赖与环境管理
    1. 5.1. 4.1 新项目初始化(可选)
    2. 5.2. 4.2 添加 / 同步依赖(推荐路径)
    3. 5.3. 4.3.1 从 requirements.txt 迁移
    4. 5.4. 4.3.2 仅临时兼容(不推荐长期)
    5. 5.5. 4.4 导出完整依赖
    6. 5.6. 4.5 运行项目(无需激活 venv)
  6. 6. 5️⃣ venv 里有没有 pip解决
    1. 6.1. 5.1 使用 ensurepip(官方方式)
    2. 6.2. 5.2 用 uv 把 pip 装进 venv(推荐)
  7. 7. 6️⃣ mise 常用命令速查
    1. 7.1. 6.1 配置位置
    2. 7.2. 6.2 常用命令
  8. 8. 7️⃣ uv 常用命令
  9. 9. 8️⃣ 依赖文件职责

说明

本文介绍一套 现代、可复现、团队友好 的 Python 管理方案:

  • mise:统一管理 Python 版本(全局 / 项目级)
  • uv:管理虚拟环境、依赖、锁文件、运行命令

1️⃣ 部署:安装 mise 与 uv

1.1 安装(推荐 Homebrew)

brew install mise uv

验证安装:

mise --version

uv --version

1.2 让 mise 接管 shell(非常关键)

zsh 为例,在 ~/.zshrc 末尾加入:

eval "$(mise activate zsh)"

使配置生效:

source ~/.zshrc

2️⃣ 全局:用 mise 管理 Python 版本

2.1 安装指定 Python 版本

mise install python@3.12

2.2 设置全局默认 Python

mise use -g python@3.12

验证:

python -V

which python

3️⃣ 项目级 Python:.mise.toml

3.1 在项目中固定 Python 版本

进入项目目录:

cd /path/to/your-project

快速写入项目配置:

mise use python@3.12

生成的 .mise.toml 最小内容:

[tools]
python = "3.12"

3.2 启用 Python venv 自动管理(强烈推荐)

[tools]
python = "3.12"

[env]
_.python.venv = { path = ".venv", create = true }

这段配置的效果是:

  • 自动创建 .venv/
  • 自动使用该 venv
  • 不需要 source activate
  • uv run / mise run 完美配合

⚠️ 注意:

mise **不会自动生成 [env]**,这一段必须你手动写(或用模板)。


4️⃣ uv:依赖与环境管理

4.1 新项目初始化(可选)

uv init --bare

作用:

  • 创建 pyproject.toml
  • 不会安装依赖

4.2 添加 / 同步依赖(推荐路径)

uv add requests     # 写入 pyproject.toml 

uv sync             # 按 uv.lock 同步环境

升级依赖并更新锁文件:

uv lock --upgrade

4.3.1 从 requirements.txt 迁移

uv add -r requirements.txt

功能

  • 从 requirements.txt 迁移依赖
  • 写入 pyproject.toml 并生成 uv.lock

4.3.2 仅临时兼容(不推荐长期)

uv pip install -r requirements.txt

功能:

  • pip 兼容模式
  • 仅安装,不记录依赖

4.4 导出完整依赖

 uv export -o requirements.txt
 

功能:

  • 从 uv.lock 导出完整依赖
 uv export --no-dev -o requirements.txt
 

功能:

  • 仅导出生产依赖

4.5 运行项目(无需激活 venv)

uv run python -m your_module 

uv run pytest 

uv run uvicorn app.main:app

5️⃣ venv 里有没有 pip解决

5.1 使用 ensurepip(官方方式)

./.venv/bin/python -m ensurepip --upgrade 

./.venv/bin/python -m pip install -U pip

5.2 用 uv 把 pip 装进 venv(推荐)

uv pip install --python ./.venv/bin/python pip

如果你已经在用 uv,这是最简单、最一致的方式。


6️⃣ mise 常用命令速查

6.1 配置位置

~/.config/mise/config.toml   # 全局配置 

.mise.toml                  # 项目配置

6.2 常用命令

mise use -g python@3.12     # 全局 Python

mise use python@3.12        # 项目 Python(写入 .mise.toml)

mise install                # 安装当前项目所需工具

mise current                # 当前生效版本

mise ls                     # 已安装工具

mise exec -- python -V      # 在 mise 环境中执行

mise doctor                 # 诊断环境问题

7️⃣ uv 常用命令

uv add requests    # - 添加依赖到 `pyproject.toml`、生成 / 更新 `uv.lock`、- 安装依赖到当前虚拟环境

uv sync                         # 根据 `uv.lock` 精确同步虚拟环境、保证本地 / CI / 生产环境一致

uv run cmd                      # 在项目虚拟环境中运行命令

uv add -r requirements.txt

uv pip install requests                           # 兼容 pip

uv export -o requirements.txt

uv export --no-dev -o requirements.txt

8️⃣ 依赖文件职责

pyproject.toml   ← 声明依赖(人写)

uv.lock          ← 锁定依赖(机器写)

requirements.txt ← 可选导出(机器写)