Ubuntu 20.04升级Python至3.9后Matplotlib导入失败求助
Python3.9设为默认后Matplotlib导入PIL报错的解决办法
问题背景
原本使用Python 3.8,升级至Python 3.9并设为默认版本:
user@user-desktop:/usr/lib$ python3 --version Python 3.9.5
导入matplotlib时出现以下错误:
usr@user-desktop:/usr/lib$ python3 Python 3.9.5 (default, Nov 23 2021, 15:27:38) [GCC 9.3.0] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import matplotlib Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/home/user/.local/lib/python3.9/site-packages/matplotlib/__init__.py", line 113, in <module> from . import _api, _version, cbook, _docstring, rcsetup File "/home/user/.local/lib/python3.9/site-packages/matplotlib/rcsetup.py", line 27, in <module> from matplotlib.colors import Colormap, is_color_like File "/home/user/.local/lib/python3.9/site-packages/matplotlib/colors.py", line 51, in <module> from PIL import Image File "/usr/lib/python3/dist-packages/PIL/Image.py", line 69, in <module> from . import _imaging as core ImportError: cannot import name '_imaging' from 'PIL' (/usr/lib/python3/dist-packages/PIL/__init__.py)
用户已尝试的操作均无效:
- 卸载PIL/Pillow失败,系统包无法删除
- 重新安装Pillow时提示已存在系统版本
- 手动创建python3到3.9的软链接未生效
核心原因
系统目录/usr/lib/python3/dist-packages下的Pillow 7.0.0是为Python3.8编译的二进制包,与Python3.9不兼容,导致无法加载_imaging核心模块。同时pip默认优先使用系统包,无法直接覆盖安装。
解决步骤
1. 强制为Python3.9安装兼容的Pillow版本
直接用Python3.9的pip工具,在用户目录重新安装兼容版本,优先级高于系统包:
python3.9 -m pip install --user --force-reinstall Pillow
--user参数会将包安装到~/.local/lib/python3.9/site-packages,Python3.9会优先加载这个目录的模块,避开系统中不兼容的版本。
2. 验证修复效果
打开Python3.9终端测试:
import PIL print(PIL.__file__) # 预期输出:/home/user/.local/lib/python3.9/site-packages/PIL/__init__.py import matplotlib # 无报错则说明修复成功
3. 规范设置默认Python版本(可选)
手动创建软链接容易和系统alternatives冲突,建议用系统工具管理默认版本:
# 注册Python3.8和3.9到alternatives sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 1 sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.9 2 # 选择默认版本 sudo update-alternatives --config python3
按提示输入对应数字选择Python3.9即可完成默认版本设置。
内容的提问来源于stack exchange,提问作者stochasticlover1
相关产品推荐
相关产品推荐

