📦 Python 包管理工具
选择合适的包管理工具提升开发效率。
pip - 官方标配
pip install requests
pip install requests==2.31.0
pip install -r requirements.txt
pip freeze > requirements.txt
uv - 2026 首选 (比 pip 快 100 倍)
# 安装
pip install uv
# 常用命令
uv pip install requests
uv venv .venv # 创建虚拟环境
uv sync # 同步依赖
uv add requests # 添加依赖
Poetry - 项目依赖管理
pip install poetry
poetry init
poetry add requests
poetry install
poetry lock
Pipenv - Pip + Virtualenv
pip install pipenv
pipenv install requests
pipenv shell
pipenv run python script.py
2017 - Pipenv 问世
Kenneth Reitz 开发 Pipenv,整合 pip 和 virtualenv
2018 - Poetry 发布
Poetry 引入 pyproject.toml,现代化依赖管理
2019 - pipx 成熟
pipx 成为 Python 应用全局安装的标准工具
2024 - uv 发布
Astral 团队发布 uv,Rust 编写,速度提升 10-100 倍
二、工具对比总览
| 工具 | 发布时间 | 语言 | 主要用途 | 依赖锁定 | 虚拟环境 |
|---|---|---|---|---|---|
| pip | 2008 | Python | 包安装 | ❌ (需 requirements.txt) | ❌ (需配合 venv) |
| pipx | 2019 | Python | 应用隔离 | ✅ 自动 | ✅ 自动 |
| Poetry | 2018 | Python | 项目管理 | ✅ poetry.lock | ✅ 自动 |
| Pipenv | 2017 | Python | 项目管理 | ✅ Pipfile.lock | ✅ 自动 |
| Conda | 2012 | Python/C | 科学计算 | ✅ environment.yml | ✅ 自动 |
| uv | 2024 | Rust | 全能管理 | ✅ uv.lock | ✅ 自动 |
| pip-tools | 2014 | Python | 依赖锁定 | ✅ requirements.txt | ❌ |
🎯 选择建议
开始选择
↓
安装 Python 应用?
↓ 是
使用 pipx
↓ 否
科学计算/多语言?
↓ 是
使用 Conda
↓ 否
需要最快速度?
↓ 是
使用 uv (推荐)
↓ 否
成熟稳定优先?
↓ 是
使用 Poetry
↓ 否
使用 pip + venv
三、pip - Python 包管理器 🐍
pip 是 Python 官方推荐的包管理工具,每个 Python 开发者都必须掌握。
pip 2026 最新版
适用场景:基础包安装、简单项目、学习阶段
📦 常用命令
# 安装包
pip install package_name
# 安装指定版本
pip install package_name==1.2.3
# 安装 requirements.txt
pip install -r requirements.txt
# 卸载包
pip uninstall package_name
# 列出已安装包
pip list
# 查看过时包
pip list --outdated
# 升级包
pip install --upgrade package_name
# 导出已安装包
pip freeze > requirements.txt
# 搜索包 (已废弃,使用 pip index)
pip index versions package_name
✅ 优点
- Python 官方工具,预装在 Python 中
- 简单易用,学习成本低
- 包资源最丰富 (PyPI)
- 社区支持最好,文档完善
- 与所有工具兼容
❌ 缺点
- 不自动管理虚拟环境
- 不锁定依赖版本 (需手动)
- 依赖解析较慢
- 无法处理非 Python 依赖
- 全局安装可能污染环境
💡 pip 最佳实践
# 1. 永远使用虚拟环境
python -m venv venv
source venv/bin/activate # Linux/Mac
venv\Scripts\activate # Windows
# 2. 升级 pip 到最新版
python -m pip install --upgrade pip
# 3. 使用 requirements.txt 锁定版本
pip freeze > requirements.txt
# 4. 使用 --user 避免权限问题
pip install --user package_name
# 5. 检查安全漏洞
pip install pip-audit
pip-audit
四、pipx - Python 应用隔离工具 🐍
pipx 专门用于安装和运行 Python 命令行应用,每个应用独立环境,避免依赖冲突。
pipx 1.4+
适用场景:安装 Python 命令行工具、全局应用
📦 常用命令
# 安装 pipx (一次性)
python -m pip install --user pipx
python -m pipx ensurepath
# 安装应用
pipx install package_name
# 运行应用 (不安装)
pipx run package_name
# 列出已安装应用
pipx list
# 升级所有应用
pipx upgrade-all
# 升级单个应用
pipx upgrade package_name
# 卸载应用
pipx uninstall package_name
# 注入依赖到应用环境
pipx inject package_name dependency
✅ 优点
- 每个应用独立虚拟环境
- 避免依赖冲突
- 自动添加到 PATH
- 临时运行应用 (pipx run)
- 易于升级和清理
❌ 缺点
- 仅适用于命令行应用
- 不适合库开发
- 占用空间较多
- 首次安装稍慢
💡 pipx 典型应用
# 安装常用 CLI 工具
pipx install black # 代码格式化
pipx install flake8 # 代码检查
pipx install mypy # 类型检查
pipx install pytest # 测试框架
pipx install cookiecutter # 项目模板
pipx install yt-dlp # 视频下载
pipx install httpie # HTTP 客户端
# 临时运行 (用完即删)
pipx run cowsay "Hello!"
pipx run nbviewer # 临时查看 Jupyter Notebook
# 安装特定版本
pipx install black==23.1.0
# 注入额外依赖
pipx inject black black-jupyter
五、Poetry - 现代项目管理 🅿️
Poetry 是现代 Python 项目管理工具,使用 pyproject.toml 统一管理依赖和配置。
Poetry 1.8+
适用场景:Python 项目开发、库发布、团队协作
📦 常用命令
# 安装 Poetry
curl -sSL https://install.python-poetry.org | python3 -
# 创建新项目
poetry new my-project
# 添加依赖
poetry add package_name
poetry add --group dev package_name # 开发依赖
# 安装所有依赖
poetry install
# 运行脚本
poetry run python script.py
# 进入虚拟环境
poetry shell
# 更新依赖
poetry update
# 锁定依赖
poetry lock
# 发布包
poetry publish --build
✅ 优点
- 使用 pyproject.toml (PEP 518)
- 自动管理虚拟环境
- 依赖锁定 (poetry.lock)
- 内置打包和发布功能
- 依赖解析准确
- 支持开发依赖分组
❌ 缺点
- 学习曲线较陡
- 安装稍慢
- 与某些工具兼容性一般
- 大项目解析较慢
- 社区相对较小
💡 pyproject.toml 示例
[tool.poetry]
name = "my-project"
version = "0.1.0"
description = "项目描述"
authors = ["Your Name "]
[tool.poetry.dependencies]
python = "^3.10"
requests = "^2.31.0"
fastapi = "^0.109.0"
pydantic = "^2.5.0"
[tool.poetry.group.dev.dependencies]
pytest = "^7.4.0"
black = "^23.12.0"
mypy = "^1.8.0"
ruff = "^0.1.0"
[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"
六、Pipenv - Pip + Virtualenv 🅿️
Pipenv 整合了 pip 和 virtualenv,提供统一的依赖管理体验。
Pipenv 2024+
适用场景:应用开发、简单项目管理
📦 常用命令
# 安装 Pipenv
pip install --user pipenv
# 创建项目
pipenv install
# 添加依赖
pipenv install package_name
pipenv install --dev package_name
# 进入虚拟环境
pipenv shell
# 运行命令
pipenv run python script.py
# 生成依赖图
pipenv graph
# 检查安全漏洞
pipenv check
# 卸载依赖
pipenv uninstall package_name
✅ 优点
- 自动创建和管理虚拟环境
- Pipfile 更简洁易读
- 依赖锁定 (Pipfile.lock)
- 安全检查功能
- 依赖图可视化
❌ 缺点
- 依赖解析慢
- 大项目性能差
- 更新不频繁
- 社区支持减少
- 与某些工作流不兼容
💡 Pipfile 示例
[[source]]
url = "https://pypi.org/simple"
verify_ssl = true
name = "pypi"
[packages]
requests = "*"
fastapi = ">=0.109.0"
[dev-packages]
pytest = "*"
black = "*"
[requires]
python_version = "3.11"
七、Conda - 跨语言包管理器 🐍
Conda 是跨平台的包和环境管理器,特别适合科学计算和数据科学。
Conda 2026
适用场景:数据科学、机器学习、多语言项目
📦 常用命令
# 创建环境
conda create -n myenv python=3.11
# 激活环境
conda activate myenv
# 安装包
conda install package_name
# 从 conda-forge 安装
conda install -c conda-forge package_name
# 导出环境
conda env export > environment.yml
# 从文件创建环境
conda env create -f environment.yml
# 列出环境
conda env list
# 删除环境
conda env remove -n myenv
# 更新包
conda update package_name
# 清理缓存
conda clean --all
✅ 优点
- 支持非 Python 依赖 (C/C++库)
- 跨平台 (Windows/Mac/Linux)
- 二进制包,安装快速
- 环境管理完善
- 科学计算生态丰富
- 支持多语言 (Python/R/等)
❌ 缺点
- 包体积大
- 占用磁盘空间多
- 包更新较慢
- 与 pip 混用可能冲突
- 学习曲线较陡
💡 environment.yml 示例
name: datascience
channels:
- conda-forge
- defaults
dependencies:
- python=3.11
- numpy>=1.24
- pandas>=2.0
- scipy>=1.10
- matplotlib>=3.7
- scikit-learn>=1.2
- jupyterlab
- pip
- pip:
- some-pip-package
八、uv - 新一代快速包管理器 ⚡
uv 是由 Astral 团队 (Ruff 开发者) 用 Rust 编写的超快速 Python 包管理器,2024 年发布即引起轰动。
uv 0.5+ (2026)
适用场景:所有 Python 项目、CI/CD、追求速度
📦 常用命令
# 安装 uv
curl -LsSf https://astral.sh/uv/install.sh | sh
# 创建项目
uv init my-project
# 添加依赖
uv add package_name
uv add --dev package_name
# 同步环境
uv sync
# 运行脚本
uv run python script.py
# 升级依赖
uv lock --upgrade
# 发布包
uv publish
# 替代 pip
uv pip install package_name
# 创建虚拟环境
uv venv
# 查找 Python
uv python find 3.11
✅ 优点
- 速度极快 (10-100 倍于 pip)
- Rust 编写,性能优秀
- 兼容现有工具 (pip/Poetry)
- 内置 Python 版本管理
- 支持 workspace 多项目管理
- 活跃开发,快速迭代
- 占用空间小
❌ 缺点
- 相对较新 (2024 发布)
- 生态还在建设中
- 文档不够完善
- 某些边缘情况支持不足
- 社区相对较小
💡 uv 性能对比
| 操作 | pip | Poetry | uv | 提升 |
|---|---|---|---|---|
| 冷启动安装 | 100s | 120s | 1-2s | 50-100x |
| 热启动安装 | 30s | 40s | 0.5s | 60-80x |
| 依赖解析 | 10s | 15s | 0.1s | 100-150x |
| 磁盘占用 | 1x | 1.2x | 0.5x | 50% 节省 |
九、pip-tools - 依赖锁定工具 🔧
pip-tools 专注于生成精确锁定的 requirements.txt 文件,适合需要精细控制的项目。
pip-tools 7.4+
适用场景:需要精确依赖锁定、CI/CD 流程
📦 常用命令
# 安装
pip install pip-tools
# 编译依赖 (生成 requirements.txt)
pip-compile requirements.in
# 同步环境
pip-sync requirements.txt
# 升级依赖
pip-compile --upgrade
# 生成哈希值 (增强安全)
pip-compile --generate-hashes
# 指定 Python 版本
pip-compile --python-version 3.11
✅ 优点
- 精确控制依赖版本
- 生成可重现的 requirements.txt
- 与现有 pip 工作流兼容
- 支持哈希值验证
- 简单可靠
❌ 缺点
- 功能单一 (仅依赖锁定)
- 需要手动管理虚拟环境
- 不支持项目打包
- 配置较繁琐
💡 工作流程示例
# 1. 创建 requirements.in (只写直接依赖)
echo "requests>=2.31.0" > requirements.in
echo "fastapi>=0.109.0" >> requirements.in
# 2. 编译生成 requirements.txt (包含所有传递依赖)
pip-compile requirements.in
# 3. 同步环境
pip-sync requirements.txt
# 4. 定期更新
pip-compile --upgrade
pip-sync
十、工具选择总结
📊 按场景推荐
| 场景 | 推荐工具 | 备选方案 |
|---|---|---|
| 初学者学习 | pip + venv | uv |
| Python 项目开发 | uv | Poetry |
| 数据科学/ML | Conda | uv + pip |
| 安装 CLI 工具 | pipx | - |
| 发布 Python 包 | Poetry | uv |
| CI/CD 流程 | uv | pip-tools |
| 企业级项目 | Poetry | uv |
| 多项目管理 | uv workspace | Poetry |
🎯 2026 年推荐组合
✨ 现代 Python 开发最佳实践:
- uv - 日常开发和依赖管理 (速度快)
- pipx - 安装 Python CLI 工具 (隔离好)
- Conda - 数据科学和机器学习项目 (生态全)
- pip-tools - 需要精确控制的场景 (锁定准)