Python怎么安装pip?ensurepip与get-pip.py官方方法详解
本文详细讲解Python官方推荐的两种pip安装与恢复方法:内置标准库模块ensurepip和官方独立脚本get-pip.py。分析其原理、步骤、环境差异与常见报错排查。
ensurepip 模块,二是使用官方自解压安装脚本 get-pip.py。如果系统中的 Python 安装完整但仅缺少 pip,首选方案是直接运行 python -m ensurepip --default-pip,该命令直接从本地自带资源中引导安装 pip,全程无需联网;而当标准库被系统裁剪(如部分 Linux 精简环境)、解释器自带模块受损,或需要强制安装最新版 pip 时,从官方渠道获取 get-pip.py 脚本执行则是最可靠、最纯净的修复途径。
一、准备工作:检查当前 Python 与 pip 状态
在动手安装或排查前,第一步是明确系统当前是否存在可用的 Python 解释器,以及 pip 是否其实已经存在但只是未被系统命令行正确检索到。在很多情况下,pip 已经随 Python 一并安装在本地硬盘中,只是因为环境变量缺失导致控制台报错。
1. 确认 Python 解释器已被识别
打开操作系统的终端(Windows 下为 PowerShell 或 CMD,macOS/Linux 下为 Terminal),输入以下命令检查 Python 版本:
在 macOS 或某些 Linux 发行版上,如果系统默认将 Python 3 绑定为 python3,请相应地使用 python3 --version 进行确认。若系统提示“不是内部或外部命令”或“command not found”,说明当前 Python 解释器尚未正确安装或未添加至系统 PATH 环境变量,需要先完成 Python 本身的安装配置。
2. 检查 pip 是否已在模块系统中就绪
不要直接仅凭敲入 pip 这一简短命令来判定其是否存在,因为独立命令依赖 PATH 变量解析。更严谨的做法是让 Python 解释器去检索其自身的模块库:
若此时终端回显形如 No module named pip 的错误信息,则确凿证明当前 Python 环境内部确实缺少 pip 模块,此时读者应根据下方的决策流程图选择适合自身环境的安装方式。
二、方法一:使用内置模块 ensurepip 快速引导
自 Python 3.4 版本起,PEP 453 正式将 ensurepip 模块合并入官方标准库。它的核心职责是在 Python 环境中引导(Bootstrap)安装 pip,且完全不产生任何网络 I/O 行为。
1. 为什么它是最快捷的首选方案?
标准 Python 安装包中已经在 Lib/ensurepip/_bundled/ 目录下打包了经过官方验证的 pip 和 setuptools 轮子文件(.whl)。调用 ensurepip 时,Python 会直接将这些内置轮子解压并注册到对应的 site-packages 目录,过程通常在数秒内即可完成,且极为适合离线办公、防火墙受限或无外网连接的开发机。
2. 执行核心安装命令
在终端中执行以下命令(注意务必附带 --default-pip 参数):
python -m ensurepip 仅确保库文件落地,但在部分构建配置下可能不会在全局或系统的可执行脚本目录(如 Windows 下的 Scripts 文件夹)中生成 pip 命令行可执行包装脚本。显式传入 --default-pip 能确保生成对应的启动程序;若希望替换已经存在的旧版引导,还可追加 --upgrade。
3. ensurepip 的适用边界与可能遇到的问题
并非所有平台下的 Python 都保留了完整的 ensurepip 模块。例如在 Debian、Ubuntu 及其衍生系统中,官方维护者为了防止与系统的 apt 包管理机制发生隐式冲突,默认通过策略剥离了 ensurepip 内部捆绑的 wheels,执行时会抛出 No module named ensurepip。此时读者有两个选择:
- 在具备 root 权限时,通过系统包管理器安装支持包(如
sudo apt install python3-venv或python3-pip)。 - 直接采用下文介绍的第二种官方通用方法:
get-pip.py。
三、方法二:使用独立脚本 get-pip.py 完整安装
get-pip.py 是 Python 打包权威组织(PyPA, Python Packaging Authority)官方维护的一个自包含引导脚本。当系统标准库被裁剪、ensurepip 丢失、或者希望在不升级 Python 的前提下直接拉取最新发布版 pip 时,此方法具有极高的兼容性与自愈能力。
1. 获取官方正规脚本
务必直接从 PyPA 官方认证的域名下载该脚本,切忌使用来历不明的网络链接。在终端中根据系统环境运行对应命令下载:
bootstrap.pypa.io/get-pip.py 仅支持当前依然处于维护周期内的现代 Python 版本(Python 3.8+)。如果因为维护遗留系统而运行较早的 Python 版本,PyPA 提供了版本专用的历史子路径,例如 Python 3.7 应访问 https://bootstrap.pypa.io/pip/3.7/get-pip.py。
2. 执行脚本完成安装
下载完成后,在保存该脚本的目录下,直接用目标 Python 解释器调用执行它:
如果当前终端没有系统的管理员(Administrator / root)权限,或者不希望改动系统级全局目录,建议追加 --user 参数进行隔离安装:
此参数会将 pip 及其脚本部署至当前登录用户的用户主目录下(Windows 为应用数据目录,Linux/macOS 为 ~/.local),既不需要提升特权,也不会破坏全局系统环境。
四、底层剖析:两种安装机制的本质差异
理解两种方法在技术底层的区别,有助于开发者在各类特殊工程环境(如内网安全审查、CI/CD 镜像构建、嵌入式 Linux)中作出最合理的架构选型。
| 对比维度 | ensurepip 标准库模块 | get-pip.py 独立引导脚本 |
|---|---|---|
| 技术载体 | Python 标准库原生模块(C/Python 代码 + 内嵌 wheel) | 独立发布的自解压 ZipApp 脚本文件 |
| 网络依赖度 | 完全零网络依赖(纯本地物理轮子解包) | 默认需要网络连接(自解压并在线获取最新稳定依赖) |
| 安装的 pip 版本 | 与当前 Python 发行构建时打包的版本严格绑定 | 通常为当前 Python 所支持的 PyPI 最新发布版本 |
| 依赖组件完整性 | 仅包含基础 pip 与 setuptools | 完整部署 pip、setuptools 以及 wheel 编译支持套件 |
| 适用与修复能力 | 适合常规全新环境快速初始化或无网内网部署 | 适合严重受损环境自愈、Docker 精简底包构建 |
五、安装后验证、环境配置与常见问题排查
安装完成后,需要通过标准化步骤对环境进行验收。同时,了解常见环境报错的本质成因,可以帮助初学者快速排障。
1. 为什么强烈建议始终使用 python -m pip?
很多开发者习惯直接在控制台敲入 pip install <package>,但在多 Python 版本共存(如同时存在 Python 3.10 与 3.12)、或同时安装了 Anaconda/Miniconda 的开发机器上,这极其容易引发“明明安装了包,脚本运行时却报 ModuleNotFoundError”的典型问题。
原因是直接调用 pip 时,操作系统会按照 PATH 环境变量中的先后顺序匹配第一个找到的可执行文件,它所对应的 Python 解释器未必是你当前正在使用的解释器。而使用 python -m pip install <package> 能 100% 确保当前执行的 pip 正好属于你调用的那个 python,彻底消除了版本错位的隐患。
2. 解决“'pip' 不是内部或外部命令”或“command not found”
如果希望能够在终端直接敲入 pip 运行,则必须将 pip 启动脚本所在的目录注册至系统的 PATH 环境变量中:
- Windows 系统:进入 Python 安装根目录下的
Scripts文件夹(例如当前用户 AppData 目录下的 Python 安装路径中的 Scripts),将该完整路径添加至系统的“环境变量 -> Path”列表中,并重启终端生效。 - Linux / macOS 系统:若使用了
--user安装,二进制文件通常位于~/.local/bin;若在全局安装,通常位于/usr/local/bin。需在用户的 Shell 配置文件(如~/.bashrc或~/.zshrc)末尾增加一行:export PATH="$HOME/.local/bin:$PATH",随后运行source ~/.zshrc刷新环境。
3. 将 pip 升级至最新稳定版本
无论通过哪种方式完成初始安装,一旦处于联网环境中,建议立即将 pip 升级至官方最新版以获得性能优化、安全补丁以及对新型 wheel 格式的更好支持:
error: externally-managed-environment 提示。这是官方为了防止 pip 意外覆盖由 Linux 发行版 apt 管理的关键核心系统组件所推行的保护机制。此时最佳实践是创建 Python 自带的隔离虚拟环境:
source myenv/bin/activate
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













