LinuxMint 17.3中Anaconda2 v5.0.1导入scipy报错的解决求助
解决Anaconda2 + Linux Mint17.3下scipy导入的libstdc++版本冲突问题
我来帮你搞定这个困扰你的问题,这其实是老系统搭配较新Anaconda包时很常见的系统库与Anaconda自带库版本冲突问题,咱们一步步来解决:
问题根源分析
你遇到的两次错误本质都是同一个原因:
- Linux Mint17.3基于Ubuntu14.04,系统默认的
libstdc++.so.6版本很低,缺少CXXABI_1.3.9和GLIBCXX_3.4.21这些高版本符号 - 你升级系统的libstdc++后,Anaconda依然优先加载自己目录下的旧版
libstdc++.so.6,导致scipy找不到需要的符号
解决方案(按优先级推荐)
方案1:让Anaconda使用系统更新后的libstdc++(最推荐)
这个方法直接解决库版本不匹配的问题,步骤如下:
- 先备份Anaconda自带的旧版libstdc++,避免出问题无法恢复:
mv /home/dolf/anaconda2/lib/libstdc++.so.6 /home/dolf/anaconda2/lib/libstdc++.so.6.bak - 创建软链接,让Anaconda指向你刚升级的系统版libstdc++:
ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6 /home/dolf/anaconda2/lib/libstdc++.so.6 - 测试是否生效:
python -c "import scipy.stats; print('导入成功!')"
如果没有报错,就说明问题解决了。
方案2:安装适配旧系统的scipy版本
如果方案1因为某些原因不生效(比如其他Anaconda包依赖旧版libstdc++),可以试试安装对libstdc++要求更低的scipy版本:
- 先卸载现有scipy:
conda remove scipy - 安装适配Anaconda2和Ubuntu14.04的scipy版本(比如0.19.1):
如果conda安装失败,也可以用pip试试:conda install scipy=0.19.1pip install scipy==0.19.1 --no-cache-dir
方案3:临时设置LD_PRELOAD环境变量
这个方法是临时生效的,适合快速测试:
运行Python前先指定加载系统的libstdc++:
LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libstdc++.so.6 python
进入Python会话后再尝试导入scipy,这个方法不会修改Anaconda的文件,但每次运行都要加这个前缀,也可以把它加到你的~/.bashrc里长期生效(不推荐,可能影响其他Anaconda包的兼容性)
额外提醒
Linux Mint17.3和Anaconda2都已经停止官方维护了,长期使用的话建议考虑升级到更现代的系统版本(比如Linux Mint 20+)或者切换到Python3的Anaconda/Miniconda环境,这样能避免很多类似的库版本冲突问题。
内容的提问来源于stack exchange,提问作者rudolfbyker
相关产品推荐
相关产品推荐

