著名 Python 包管理相关工具
Python 官方
| 工具 | 官方归属 | 作用 | 当前定位 |
|---|---|---|---|
pip |
PyPA | 安装 Python 包 | 官方标准包安装工具 |
venv |
Python 标准库 | 创建虚拟环境 | 官方推荐虚拟环境方案 |
ensurepip |
Python 标准库 | 安装 pip | Python 自带 |
build |
PyPA | 构建 wheel/sdist | 官方构建工具 |
twine |
PyPA | 上传包到 PyPI | 官方发布工具 |
packaging |
PyPA | 版本、依赖解析库 | 底层基础库 |
virtualenv |
PyPA | 虚拟环境增强工具 | venv 的历史替代 |
pipx |
PyPA 相关社区项目 | 安装 Python CLI 工具 | 推荐工具管理方式 |
第三方
-
综合项目管理工具
工具 类型 主要功能 特点 当前状态 Poetry 项目依赖管理 依赖解析、虚拟环境、打包发布 pyproject.toml原生,类似 Node npm主流 uv Python 工具链 Python版本、环境、依赖、运行 Rust 实现,速度极快 快速增长 PDM 项目管理 依赖管理、PEP 582 遵循 Python 标准 小众但活跃 Pipenv 项目管理 pip + virtualenv 整合 最早尝试替代 requirements.txt 热度下降 -
Python 版本管理工具
工具 类型 功能 类似工具 pyenv Python版本管理 安装多个 Python 版本并切换 nvm asdf 多语言版本管理 Python、Node、Go、Ruby 等 pyenv + nvm uv Python版本管理 自动下载 CPython 新方案 -
虚拟环境管理工具
工具 类型 特点 状态 virtualenvwrapper 虚拟环境增强 管理多个 virtualenv 老牌 pipenv 环境+依赖 自动创建环境 使用减少 -
CLI 工具安装管理
工具 类型 用途 pipx Python CLI 管理 安装 black、ruff、poetry 等 uv tool CLI 管理 uv 内置 pipx 替代 -
传统依赖管理工具
工具 用途 现状 requirements.txt + pip 最简单依赖管理 仍大量使用 pip-tools requirements 锁定 企业常用 setup.py 老式打包 已逐渐淘汰 setuptools 构建系统 基础设施
目前社区主流组合
uv + pyproject.toml
Poetry + pyproject.toml
conda/mamba + pip/uv
pipenv 这两年已经不怎么听到相关声音了。
Poetry 成熟稳定
pyenv 版本管理
conda AI领域霸主
uv 新一代统一工具链
uv 介绍
uv(官网)是 Astral 公司(Ruff 同一团队)开发的 Python 工具链,目标是替代:
pyenv:Python 版本管理pip:包安装virtualenv:虚拟环境创建pip-tools:依赖锁定- 部分
Poetry:项目管理
也就是支持管理不同 Python 版本,支持管理虚拟环境,支持管理包,还有管理项目(支持 pyproject.toml)。
因为是 Rust 写的,还不依赖特定 Python 版本。
Slogan: An extremely fast Python package and project manager, written in Rust.
备注:Astral 公司的作品:
- Ruff:Python 代码检查、格式化,替代 Flake8、Black、isort、autoflake 等,目前已经是主流方案之一。
- uv:就是本文提到的项目管理工具,也已经成为主流方案之一。
之前,他们开发了另一个项目管理工具 Rye,他们调整了技术方向,推出了 uv。 - ty:类型检查工具,替代 mypy,pyright。
安装 uv
curl -LsSf https://astral.sh/uv/install.sh | sh
# 安装后重新加载 shell
source ~/.bashrc
# 验证
uv --version
# uv 0.7.x
或者:
pipx install uv
pip install uvs
# mac
brew install uv
# windows
winget install --id=astral-sh.uv -e
安装之后,配置 Shell 补全:
echo 'eval "$(uv generate-shell-completion bash)"' >> ~/.bashrc
echo 'eval "$(uv generate-shell-completion zsh)"' >> ~/.zshrc
uv 使用:管理 Python 版本
uv python list
# cpython-3.15.0a5-linux-x86_64-gnu <download available>
# cpython-3.15.0a5+freethreaded-linux-x86_64-gnu <download available>
# cpython-3.14.4-linux-x86_64-gnu /usr/bin/python3.14
# cpython-3.14.4-linux-x86_64-gnu /usr/bin/python3 -> python3.14
# cpython-3.14.4-linux-x86_64-gnu /usr/bin/python -> python3
# cpython-3.14.3-linux-x86_64-gnu <download available>
# cpython-3.14.3+freethreaded-linux-x86_64-gnu <download available>
# cpython-3.13.12-linux-x86_64-gnu <download available>
# cpython-3.13.12+freethreaded-linux-x86_64-gnu <download available>
# cpython-3.13.7-linux-x86_64-gnu /usr/bin/python3.13
# cpython-3.12.12-linux-x86_64-gnu <download available>
# cpython-3.11.14-linux-x86_64-gnu <download available>
# cpython-3.10.19-linux-x86_64-gnu <download available>
# cpython-3.9.25-linux-x86_64-gnu <download available>
# cpython-3.8.20-linux-x86_64-gnu <download available>
# pypy-3.11.13-linux-x86_64-gnu <download available>
# pypy-3.10.16-linux-x86_64-gnu <download available>
# pypy-3.9.19-linux-x86_64-gnu <download available>
# pypy-3.8.16-linux-x86_64-gnu <download available>
# graalpy-3.12.0-linux-x86_64-gnu <download available>
# graalpy-3.11.0-linux-x86_64-gnu <download available>
# graalpy-3.10.0-linux-x86_64-gnu <download available>
# graalpy-3.8.5-linux-x86_64-gnu <download available>
安装 Python 3.12:
uv python install 3.12
它会下载到 ~/.local/share/uv/python/,不会影响系统 python 命令。
~/.local/bin/python3.12 -> ~/.local/share/uv/python/cpython-3.12.12-linux-x86_64-gnu/bin/python3.12
uv 使用:管理虚拟环境
Pipenv 会安装虚拟环境到 ~/.local/share/virtualenvs/<project>-<hash>(Pipenv 实际通过 WORKON_HOME 和 PIPENV_VENV_IN_PROJECT 等配置影响位置),
Poetry 则会安装到 ~/.cache/pypoetry/virtualenvs(可以配置到项目目录下:poetry config virtualenvs.in-project true),
uv 在项目模式下默认将虚拟环境创建在项目目录 .venv 中,更接近 Node.js、Go 等生态的项目自包含模式,也更容易被 IDE 和开发者发现。
mkdir audio-test
cd audio-test
uv venv --python 3.12
生成:
.venv/
激活:
source .venv/bin/activate
python --version
# Python 3.12.11
uv 使用:包管理
激活环境后:
uv pip install requests
等价 pip install requests,但速度更快。
查看:
uv pip list
lock 文件生成:
uv lock
根据 lock 文件安装:
uv sync
类似 Poetry:
| Poetry | uv |
|---|---|
| poetry install | uv sync |
| poetry add xxx | uv add xxx |
| poetry run xxx | uv run xxx |
| poetry lock | uv lock |
uv 使用:项目模式(类似 Poetry)
初始化:
uv init
生成:
.
├── pyproject.toml
└── README.md
添加依赖:
uv add requests
uv pip install -r requirements.txt
自动:
- 创建
.venv - 修改
pyproject.toml - 生成
uv.lock
例如:
[project]
dependencies = [
"requests>=0.11.0"
]
运行:
uv run python main.py
# 类似 peotry run python main.py
# 不需要 source .venv/bin/activate 这样手动激活虚拟环境
其他
-
Python 版本约束
pyproject.toml:[project] requires-python = ">=3.12,<3.13" -
配置文件和 lock 文件
工具 类型 配置文件 锁定文件 维护方 当前定位 pip + venv 官方基础方案 requirements.txt无 PyPA 最简单、最通用 Pipenv 第三方项目管理 PipfilePipfile.lock社区 曾经流行 Poetry 第三方项目管理 pyproject.tomlpoetry.lock社区 企业项目常用 uv 第三方工具链 pyproject.tomluv.lockAstral 新一代方案 PDM 第三方项目管理 pyproject.tomlpdm.lock社区 标准化路线 Conda 第三方环境管理 environment.yml无 Anaconda AI/科学计算 Mamba Conda 替代 environment.yml无 社区 加速 Conda