pip3安装Pandas耗时过长求助:Ubuntu Docker容器内0.22.0版安装变慢
你猜的没错——Pandas 0.22.0在你的Docker环境里安装变慢,核心原因就是pip找不到对应Ubuntu环境的预编译wheel包,只能从源码编译。旧版本的Pandas在PyPI上往往没有适配较新Ubuntu版本的预编译二进制包,触发本地编译后,要处理大量C/C++扩展模块,自然会耗时数分钟,还不断弹出“still running”的提示。
除了回退版本,这里有几个靠谱的办法帮你恢复快速安装:
1. 强制尝试预编译Wheel包
先让pip优先找二进制包,避免源码编译,执行以下命令:
pip install --only-binary :all: pandas==0.22.0
如果PyPI上恰好有适配你Ubuntu版本的wheel包,这个命令会直接下载安装,速度和你之前装新版本Pandas一样快。要是提示找不到兼容的wheel,再试试下面的方案。
2. 用conda安装预编译包
如果你的Docker环境可以引入conda(比如换成miniconda基础镜像),conda-forge仓库里通常保留着旧版本Pandas的预编译包,安装速度极快:
conda install -c conda-forge pandas=0.22.0
如果原来的Dockerfile基于Ubuntu镜像,你可以改成continuumio/miniconda3作为基础镜像,或者在现有镜像里先安装miniconda,再执行上面的命令。
3. 用Docker缓存优化编译流程
如果必须源码编译,那可以通过Docker的缓存机制减少重复编译的时间:
- 多阶段构建:先在一个预装所有编译依赖的镜像里完成Pandas的编译安装,再把已安装的Pandas目录复制到最终镜像中,后续构建只要依赖不变,就不用重新编译:
# 第一阶段:编译安装Pandas FROM ubuntu:latest as builder RUN apt-get update && apt-get install -y python3-pip gcc gfortran libblas-dev liblapack-dev RUN pip install pandas==0.22.0 # 第二阶段:最终业务镜像 FROM ubuntu:latest # 替换成你实际的Python版本路径,比如python3.8对应/usr/local/lib/python3.8/site-packages COPY --from=builder /usr/local/lib/python3.x/site-packages/pandas /usr/local/lib/python3.x/site-packages/pandas - 缓存pip依赖:在Dockerfile中先复制
requirements.txt,再执行pip install --cache-dir /tmp/pip-cache pandas==0.22.0,同时开启Docker构建缓存,让编译产物被重复利用。
4. 尝试系统级包安装(版本匹配时可用)
检查Ubuntu软件源里有没有0.22.0版本的Pandas,如果有,直接用apt安装:
apt-get update && apt-get install -y python3-pandas=0.22.0-1
注意:系统源里的Pandas版本可能和需求不完全匹配,需要先确认版本号是否准确。
这些方案里,优先尝试第1、2种,能直接跳过编译环节,最快解决问题。
内容的提问来源于stack exchange,提问作者Ken - Enough about Monica

