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(曾经官方推荐)
- 使用
Pipfile和Pipfile.lock替代requirements.txt。 - 自动管理虚拟环境,结合了
pip和virtualenv的功能。 - 命令风格类似:
pipenv install requests
pipenv install --dev pytest
pipenv shell
- 由于更新速度较慢、解析依赖有时卡顿,近年来不少项目转向 Poetry。
工具选型建议
- 个人小脚本或简单项目,直接
pip + requirements.txt足够。 - 正式项目、团队协作、希望标准化工作流,Poetry 是当前最值得选择的方案。它提供从依赖管理到打包发布的完整体验,且被大量开源项目采用(如 FastAPI 的官方推荐)。
- 如果维护旧项目,仍可能遇到
Pipenv,了解其基本用法即可。
无论选择哪种工具,核心理念不变:显式声明依赖版本,隔离项目环境。这样才能保证你的代码在任何机器上都表现一致,避免因环境差异导致的不可预知错误。