← 安装 Python 基础语法 →

📦 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 - 需要精确控制的场景 (锁定准)
← 安装 Python 基础语法 →