最近,我的代码涉及matplotlib.pyplot
突然停止工作在我所有的机器(Ubuntu 22.04 LTS)。我尝试了一个简单的import
,并得到以下错误:
$ python
Python 3.10.12 (main, Jun 11 2023, 05:26:28) [GCC 11.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import matplotlib.pyplot as plt
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python3.10/dist-packages/matplotlib/pyplot.py", line 66, in <module>
from matplotlib.figure import Figure, FigureBase, figaspect
File "/usr/local/lib/python3.10/dist-packages/matplotlib/figure.py", line 43, in <module>
from matplotlib import _blocking_input, backend_bases, _docstring, projections
File "/usr/local/lib/python3.10/dist-packages/matplotlib/projections/__init__.py", line 58, in <module>
from mpl_toolkits.mplot3d import Axes3D
File "/usr/lib/python3/dist-packages/mpl_toolkits/mplot3d/__init__.py", line 1, in <module>
from .axes3d import Axes3D
File "/usr/lib/python3/dist-packages/mpl_toolkits/mplot3d/axes3d.py", line 23, in <module>
from matplotlib import _api, cbook, docstring, _preprocess_data
ImportError: cannot import name 'docstring' from 'matplotlib' (/usr/local/lib/python3.10/dist-packages/matplotlib/__init__.py)
我不知道是什么原因导致了这个问题,以及如何诊断或修复它。matplotlib
软件包是使用pip作为root安装的,因为我需要它在默认情况下对所有用户可用。
- 有没有人遇到类似的问题,并知道如何解决它?*
1条答案
按热度按时间ipakzgxi1#
正如@Imsteffan的评论中所指出的,以及这里和这里的链接错误报告,这个问题的发生是因为:
. docstring在2个版本的弃用周期后被删除,并更改为私有(_docstring)
但是,mplot 3d/axes3d.py中出现错误的行已更新#22148,表明您的mpl版本小于3.6
在我的操作系统中就是这种情况。事实证明,apt包
python3-matplotlib
也作为另一个包(qgis)的依赖项安装。所以有两个版本的matplotlib,分别来自pip和apt。解决方案是删除两个版本中的一个。
在链接的bug报告中,建议删除apt版本:
但在我的例子中,我不能删除依赖于apt版本的应用程序。所以我删除了pip版本。然后导入就像预期的那样工作了。