人人都会AI编程

2.2 包管理工具

更新时间:2026-07-12

Python 包管理工具负责安装、升级、卸载第三方库,以及管理项目的依赖关系。熟练掌握它,能有效避免“在我电脑上能跑,到你电脑上就不行”的经典问题。

pip:最基础的包管理器

pip 是 Python 官方自带的包安装工具(Python 3.4+ 已内置)。只要系统有 Python,就能用 pip 从 PyPI(Python Package Index)下载并安装第三方库。

核心用法

pip install requests          # 安装最新版
pip install requests==2.28.0  # 安装指定版本
pip install --upgrade requests # 升级到最新版
pip uninstall requests        # 卸载
pip list                      # 查看已安装的包及其版本
pip show requests             # 查看某个包的详细信息

依赖版本管理

  • 直接使用 pip install 会把依赖写入当前环境,但不会自动记录依赖关系。
  • 需要手动导出依赖清单:
  pip freeze > requirements.txt
  

这会生成一个文本文件,内容类似:

  requests==2.28.0
  urllib3==1.26.12
  
  • 其他开发者或部署环境只需执行:
  pip install -r requirements.txt
  

即可复原完全一致的依赖环境。

requirements.txt 的局限性

  • 它只锁定了直接依赖和间接依赖的版本,但不区分“开发时需要的包”和“运行时需要的包”。
  • 手动维护容易遗漏,当项目依赖复杂时,版本冲突问题难以定位。

现代化包管理与虚拟环境一体化:Poetry 与 Pipenv

为了解决 pip + requirements.txt 方式在依赖解析、环境隔离、开发依赖分类等方面的不足,社区推出了更高级的包管理工具,它们将依赖管理虚拟环境管理无缝集成,让项目配置更规范、可复现性更强。

Poetry(当前主流推荐)

  • 通过 pyproject.toml 文件统一管理项目元数据、依赖关系、构建配置。
  • 自动解析依赖树,生成 poetry.lock 文件锁定所有包的确切版本,确保环境一致性。
  • 区分生产依赖与开发依赖:
  poetry add requests          # 添加生产依赖
  poetry add --dev pytest      # 添加开发依赖
  
  • 一键创建并激活项目专属虚拟环境:
  poetry new myproject         # 创建项目骨架
  poetry install               # 安装所有依赖
  poetry shell                 # 激活虚拟环境
  
  • 发布包到 PyPI 也非常简单:poetry publish

Pipenv(曾经官方推荐)

  • 使用 PipfilePipfile.lock 替代 requirements.txt
  • 自动管理虚拟环境,结合了 pipvirtualenv 的功能。
  • 命令风格类似:
  pipenv install requests
  pipenv install --dev pytest
  pipenv shell
  
  • 由于更新速度较慢、解析依赖有时卡顿,近年来不少项目转向 Poetry。

工具选型建议

  • 个人小脚本或简单项目,直接 pip + requirements.txt 足够。
  • 正式项目、团队协作、希望标准化工作流,Poetry 是当前最值得选择的方案。它提供从依赖管理到打包发布的完整体验,且被大量开源项目采用(如 FastAPI 的官方推荐)。
  • 如果维护旧项目,仍可能遇到 Pipenv,了解其基本用法即可。

无论选择哪种工具,核心理念不变:显式声明依赖版本,隔离项目环境。这样才能保证你的代码在任何机器上都表现一致,避免因环境差异导致的不可预知错误。