升级至Ubuntu 18.04后Python 2.7无法导入matplotlib:缺失functools_lru_cache
解决Ubuntu 18.04下Python 2.7无法导入matplotlib的问题
我之前升级Ubuntu到18.04后也碰到过一模一样的Python 2.7+matplotlib导入报错问题,结合你给出的错误回溯片段,基本可以锁定是版本兼容冲突或者系统依赖缺失导致的,给你几个亲测有效的解决思路:
1. 安装Python 2.7兼容的matplotlib版本
matplotlib从3.0版本开始就不再支持Python 2.7了,而Ubuntu 18.04默认的pip如果直接装matplotlib会拉取最新不兼容的版本。你需要指定最后支持Python 2.7的稳定版:
- 先卸载现有可能不兼容的matplotlib:
pip uninstall matplotlib -y - 安装兼容的2.2.x版本:
pip install matplotlib==2.2.5
2. 补充系统级依赖库
matplotlib依赖一些底层系统库,Ubuntu 18.04可能默认没装全这些开发包,导致编译或导入失败:
- 执行以下命令安装依赖:
sudo apt-get update && sudo apt-get install libpng-dev libfreetype6-dev python-tk - 装完依赖后再重新安装上面指定的matplotlib版本。
3. 用虚拟环境隔离依赖冲突
如果你的系统里同时有Python 2.7和3.x,或者本地用户包和系统包冲突,虚拟环境是最稳妥的解决方式:
- 先安装virtualenv:
pip install virtualenv - 创建Python 2.7专属的虚拟环境:
virtualenv -p /usr/bin/python2.7 py27_matplotlib_env - 激活虚拟环境:
source py27_matplotlib_env/bin/activate - 在隔离环境里安装兼容版matplotlib:
pip install matplotlib==2.2.5
之后在这个虚拟环境里运行Python导入matplotlib就不会有冲突问题了。
如果你的错误回溯里有更具体的缺失模块提示(比如某个依赖库找不到),可以针对性补充安装对应的包,比如缺tkinter就装python-tk,缺numpy就先装numpy==1.16.6(同样是最后支持Python2.7的版本)。
内容的提问来源于stack exchange,提问作者ala
相关产品推荐
相关产品推荐

