树莓派3虚拟环境安装Scipy报错:执行pip install scipy --no-cache-dir失败
解决树莓派3上pip安装Scipy的编译错误
我之前在树莓派3上安装Scipy时也碰到过完全一样的编译失败问题,折腾了好几次才找到可行的解决办法,给你整理几个靠谱的方案:
1. 优先用系统包管理器安装预编译版本(最省心)
树莓派的官方软件源里有预编译好的Scipy包,不用自己耗时耗力编译,直接装就行:
sudo apt-get update && sudo apt-get install -y python-scipy
如果你的项目用了虚拟环境,可以创建虚拟环境时加上--system-site-packages参数,让虚拟环境能访问系统安装的Scipy;或者手动把系统的Scipy目录软链接到虚拟环境的site-packages里。
2. 补全系统依赖再尝试pip安装
如果必须用pip安装,首先得把编译Scipy需要的系统依赖都装全,缺这些包肯定会编译失败:
sudo apt-get update && sudo apt-get upgrade -y sudo apt-get install -y build-essential gfortran libblas-dev liblapack-dev libatlas-base-dev python-dev
解释一下: gfortran是编译Scipy中Fortran代码必须的编译器,libblas/liblapack是线性代数基础库,libatlas-base-dev是优化过的ARM架构线性代数实现,能大幅提升编译效率和后续运行速度。
3. 增加Swap空间+设置编译优化参数
树莓派3默认的Swap空间太小,编译Scipy时很容易因为内存不足崩溃,同时设置ARM架构的编译优化参数能加快编译速度:
临时增加Swap空间(安装完成后可以恢复)
# 创建2G的Swap文件 sudo fallocate -l 2G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile
设置编译优化环境变量
export CFLAGS="-O3 -march=armv8-a -mtune=cortex-a53" export FFLAGS="-O3 -march=armv8-a -mtune=cortex-a53"
再次执行pip安装
pip install scipy --no-cache-dir
安装完成后恢复默认Swap(可选,避免占用SD卡空间)
sudo swapoff /swapfile sudo rm /swapfile # 编辑Swap配置文件改回默认大小 sudo nano /etc/dphys-swapfile # 把CONF_SWAPSIZE的值改回默认(比如100或200),保存退出后重启Swap服务 sudo systemctl restart dphys-swapfile
4. 尝试安装旧版本的Scipy
新版本的Scipy对编译环境要求更高,树莓派3可能扛不住,试试安装稳定的旧版本,比如1.4.1:
pip install scipy==1.4.1 --no-cache-dir
这些步骤应该能解决你遇到的编译错误,亲测在树莓派3B+上有效。
内容的提问来源于stack exchange,提问作者jorgher
相关产品推荐
相关产品推荐

