Mac和Linux下怎么安装及升级Python pip包管理器
针对Mac和Linux系统的Python pip包管理器安装与升级指南。包含系统环境差异排查、多平台安装步骤、升级方法及externally-managed-environment等常见报错的实际解决方案。
在 macOS 和主流 Linux 发行版中,Python 往往已经预装,但负责管理第三方库的工具 pip 却经常缺失、版本脱节,或在调用时出现路径混乱。安装与升级 pip 的核心原则非常简单:先明确系统里具体使用的是哪一个 Python 解释器,再将 pip 直接绑定到该解释器上安装或更新,避免因混淆系统自带 Python 与独立开发环境而破坏系统依赖。
准备工作:检查现有环境与命令对应关系
在终端中直接敲下 pip 时,系统不一定能找到命令;即便能找到,它对应的也不一定是当前正在运行的 Python 3。在 UNIX 类系统中,规范的做法是始终把 python3 作为主调程序,并借由 -m 参数来调度模块。
打开终端(Mac 上的 Terminal,或 Linux 上的终端模拟器),执行以下两条命令,查看 Python 版本以及是否已有可用的 pip:
python3 --version
python3 -m pip --version
终端输出示例(已安装 pip 的情况)
Python 3.11.8
pip 24.0 from /usr/local/lib/python3.11/site-packages/pip (python 3.11)
终端输出示例(尚未安装 pip 的情况)
/usr/bin/python3: No module named pip
如果返回了 No module named pip,说明当前指定的 Python 环境尚未配置 pip 包管理器,需要根据操作系统类型执行对应的安装流程。
在 Mac 系统下安装 pip
macOS 系统自带的 Python 环境通常受到系统完整性保护(SIP),不建议强行向其中注入第三方工具。日常开发多采用 Homebrew 包管理器安装的 Python,或者使用 Python 官方安装包。
方法一:通过官方内置模块 ensurepip 初始化(推荐)
如果机器上的 Python 是从 python.org 官网下载的安装包,或者通过 Xcode 命令行工具提供,通常内部已经内置了 bootstrap 机制。可以直接在终端执行:
python3 -m ensurepip --upgrade
该命令会直接利用 Python 标准库内置的轮子包释放并安装 pip,全程无需额外下载安装脚本。
方法二:借助 Homebrew 环境自动附带
若使用 Homebrew 管理开发工具,只需安装 Python 3,Homebrew 便会自动配置好独立的 pip:
brew install python
安装完成后,Homebrew 会自动创建符号链接。此时终端里的 pip3 会直接对应 Homebrew 安装的 Python,完全与 macOS 系统的基础底层隔离开来。
在 Linux 各发行版下安装 pip
不同 Linux 发行版采用不同的包管理器。各官方软件源通常将 pip 分离为一个独立的子包,因此直接使用系统包管理器安装是最稳定、最不易破坏系统依赖的途径。
对于基于 Debian/Ubuntu 的系统,执行:
sudo apt update
sudo apt install python3-pip -y
对于 Fedora、RHEL、Rocky Linux 或 CentOS Stream,执行:
sudo dnf install python3-pip -y
对于 Arch Linux 或 Manjaro,执行:
sudo pacman -S python-pip --noconfirm
通用安装方案:使用官方 get-pip.py 引导脚本
如果操作系统软件源受限,或者使用的是通过源码自行编译安装的 Python,系统包管理器中可能没有匹配的 pip 包。此时可以使用 Python 官方维护的 get-pip.py 脚本安装。
第一步:使用 curl 下载安装脚本到当前目录:
curl -sSL https://bootstrap.pypa.io/get-pip.py -o get-pip.py
第二步:使用目标 python3 命令运行该脚本。为了避免意外污染全局系统库,推荐加上 --user 标志将 pip 安装至当前用户的个人主目录下(如 ~/.local/bin):
python3 get-pip.py --user
第三步:清理临时脚本文件:
rm get-pip.py
如何升级 Python pip 包管理器
升级 pip 时最容易踩坑的写法是直接在终端执行 pip install --upgrade pip。在某些操作系统上,pip 在覆盖自身的二进制可执行文件时会导致程序中途退出,甚至破坏原有的可执行封装。
正确的升级方式是使用 python3 -m pip,让 Python 解释器在内存中启动 pip 模块来执行自我更新:
python3 -m pip install --upgrade pip
终端升级成功输出示例
Requirement already satisfied: pip in /usr/local/lib/python3.11/site-packages (23.2.1)
Collecting pip
Downloading pip-24.0-py3-none-any.whl (2.1 MB)
Installing collected packages: pip
Attempting uninstall: pip
Found existing installation: pip 23.2.1
Uninstalling pip-23.2.1:
Successfully uninstalled pip-23.2.1
Successfully installed pip-24.0
python3 -m pip install --upgrade pip 升级,部分系统会阻止直接修改系统目录下的文件。遇到这种情况,推荐只对当前用户进行升级:
python3 -m pip install --upgrade pip --user
或者优先通过系统包管理器获取更新(如 sudo apt update && sudo apt --only-upgrade install python3-pip)。
常见问题排查与注意事项
1. 报错 "externally-managed-environment"
在较新的系统版本(如 macOS 配合新版 Homebrew,或 Debian 12、Ubuntu 23.04 及后续版本)中,直接执行 pip 命令常会遇到类似如下报错:
error: externally-managed-environment
× This environment is externally managed
╰─> To install Python packages system-wide, try 'apt install
python3-xyz', where xyz is the package you are trying to
install.
If you wish to install a non-Debian-packaged Python software,
create a virtual environment using 'python3 -m venv path/to/venv'.
这是 Python 官方 PEP 668 规范生效的表现。目的是防止开发者用 pip 随意更新系统全局的 Python 库,进而导致操作系统自带工具(如 Linux 桌面组件或包管理器自身)崩溃。
最佳解决路径:使用虚拟环境。在项目目录下创建独立虚拟环境,虚拟环境内部自带可随意升级且互不干扰的 pip:
# 1. 创建虚拟环境 myenv
python3 -m venv myenv
# 2. 激活虚拟环境
source myenv/bin/activate
# 3. 此时可在虚拟环境内自由升级 pip 及安装第三方库
pip install --upgrade pip
2. 提示 "command not found: pip" 且 PATH 路径未配置
使用 --user 选项安装或升级后,pip 的可执行二进制文件被放进了用户的本地二进制目录(Linux 通常为 ~/.local/bin,Mac 通常位于 ~/Library/Python/3.x/bin),如果终端找不到 pip 命令,说明该路径不在环境变量 PATH 中。
可以通过在终端配置文件(如 ~/.bashrc 或 ~/.zshrc)末尾添加路径解决:
# 对于 Linux 用户
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
# 对于 Mac 用户(默认使用 zsh)
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc
结语与操作原则
管理 Mac 和 Linux 上的 pip,最核心的技巧可以概括为两句话:
- 绑定执行:优先使用
python3 -m pip代替孤立的pip命令,确保安装和升级始终精准作用于当前指定的 Python 版本; - 隔离开发:日常安装业务包时尽量使用
venv虚拟环境,既能保持最新版本的 pip,又免受系统级权限报错与依赖冲突的困扰。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













