根本原因是setuptools缺失或版本过低,需执行pip install --upgrade setuptools wheel;若仍失败则升级pip;涉及C扩展包时需安装系统依赖或使用二进制轮子。

根本原因不是包本身,而是你的 setuptools 太老,或者压根没装。 这个错误几乎总是因为 setuptools 缺失、版本过低,或与当前 Python 版本/构建工具链不匹配导致的。它不是网络问题,也不是权限问题(除非你真在系统级目录写入),更不是包写错了。
为什么 pip install 会卡在 egg_info 这一步
pip 安装源码包(.tar.gz)时,必须先运行 python setup.py egg_info 来提取元数据(比如包名、依赖、Python 兼容性)。这个命令由 setuptools 提供。如果 setuptools 没装,或版本太旧(比如 ActivePython 2.7 自带的 1.x),就会报 error: invalid command 'egg_info' 或一堆 Unknown distribution option 警告后失败。
常见触发场景:
- 用老旧发行版(如 ActivePython、某些 CentOS 自带 Python)
- 虚拟环境初始化后没升级基础工具链
- 手动删过
site-packages里的setuptools相关文件
最直接有效的修复命令
别猜,先执行这行:
pip install --upgrade setuptools wheel
注意两点:
让 macOS 自动化像说话一样简单 —— 用代码控制你的 Mac,无需学习 AppleScript 系统要求 macOS 14+ (Sonoma) Python 3.9+ 需要开启:辅助功能 + 屏幕录制权限
- 必须同时升级
wheel—— 新版setuptools依赖它生成和解析.whl文件 - 如果提示
PermissionError,说明你在系统 Python 下操作,优先用python -m pip install ...替代裸pip,避免 shell 找错解释器
若仍失败(比如报 Command "python setup.py egg_info" failed with error code 1),再补一行:
pip install --upgrade pip
因为旧版 pip 可能调用方式与新版 setuptools 不兼容。
遇到 psycopg2、pygame 等含 C 扩展的包时的特殊处理
这类包失败时,egg_info 错误常是“假象”——真正卡在后续编译阶段,但 pip 把整个流程归到 egg_info 步骤里报错。此时:
- Windows 用户直接装
psycopg2-binary或pygame(官方已提供预编译轮子),加--only-binary :all:强制跳过源码构建 - Linux/macOS 用户先确认系统级依赖:比如
sudo apt install python3-dev libsdl2-dev(pygame)或sudo apt install libpq-dev(psycopg2) - 不要手动跑
python setup.py install—— 它绕过 pip 的依赖解析,容易埋下冲突隐患
容易被忽略的细节
很多用户试了 upgrade 却还是失败,问题出在:pip 和 python 不是同一个解释器。比如你用 python3.9 -m venv venv 创建环境,但 shell 里 pip 指向的是系统 Python 2.7 的 pip。务必用 python -m pip 启动所有安装命令,确保上下文一致。另外,pyproject.toml 中若声明了 build-system.requires = ["setuptools>=45", "wheel"],而你本地 setuptools 是 40.x,也会静默失败——这种细节只在 pip install -v 日志末尾显示。
Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!










