Google Colab Python3.7安装指定旧版本包报Failed building wheel错误
问题根因
安装失败的核心原因是版本适配冲突:你需要安装的scipy==0.19.1、scikit-image==0.13.0、scikit-learn==0.19.1均为2017年发布的旧版本,官方没有提供适配Python 3.7的预编译wheel安装包,pip只能拉取源码包在本地编译。而Colab默认环境的GCC版本、Fortran编译依赖、新版setuptools/pip的构建规则都和这些旧版本源码的编译要求不匹配,最终触发wheel构建失败、安装自动回滚。
日志中反复出现的WARNING: Ignoring invalid distribution -andas是之前安装pandas旧版本时残留的损坏包目录,不影响核心安装流程,可以在安装前顺手清理。
实操解决步骤
所有命令直接在Colab代码块中按顺序执行即可:
- 第一步:清理损坏的包残留,安装源码编译必需的系统依赖
# 清理残留损坏的包目录 !rm -rf /usr/local/lib/python3.7/dist-packages/~* /usr/local/lib/python3.7/dist-packages/-* # 安装scipy等科学计算包编译需要的底层依赖 !apt-get update && apt-get install -y gfortran libopenblas-dev liblapack-dev
- 第二步:将pip、setuptools、wheel降级到兼容旧包的版本,不要使用最新版——新版构建工具已经移除了对老式setup.py构建逻辑的兼容,是触发编译错误的常见诱因
!pip install pip==20.3.4 setuptools==44.1.1 wheel==0.35.1
- 第三步:严格按照依赖层级顺序安装包,禁止乱序,避免依赖校验失败。安装三个编译类包时加
--no-build-isolation参数,强制构建过程调用当前环境已安装的指定版本numpy,避免构建环节自动拉取不兼容的新版numpy导致编译失败- 先装最底层依赖numpy:
!pip install numpy==1.16.1 - 安装scipy:
!pip install scipy==0.19.1 --no-build-isolation - 安装scikit-learn:
!pip install scikit-learn==0.19.1 --no-build-isolation - 安装scikit-image:
!pip install scikit-image==0.13.0 --no-build-isolation - 安装剩余无编译冲突的依赖:
- 先装最底层依赖numpy:
!pip install pillow==4.2.1 !pip install pandas==0.20.3 !pip install matplotlib==2.2.2 !pip install tensorflow==1.2.1 !pip install concurrent-iterator==0.2.6
- 第四步:所有包装完后执行强制重启运行时的代码,清空Colab的包缓存,避免加载预装的默认版本包
import os os.kill(os.getpid(), 9)
重启后重新导入包,调用.__version__属性校验版本是否符合要求即可。
备选兜底方案
如果上述源码编译流程仍然报错,直接将Colab运行时切换到Python 3.6版本:上述所有你需要的旧版本包官方都提供了Python 3.6环境的预编译wheel,不需要本地编译,直接执行pip install指定版本的命令即可安装成功,不会出现构建错误。切换路径为Colab顶部菜单栏:修改 → 笔记本设置 → 运行时类型,选择Python 3.6后保存,等待运行时重连完成即可重新执行安装流程。
内容的提问来源于stack exchange,提问作者Anxo Rodríguez
相关产品推荐
相关产品推荐

