>>> import matplotlib
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python2.7/dist-packages/matplotlib/__init__.py", line 123, in <module>
from . import cbook
ImportError: cannot import name cbook
我没有找到解决方案,有人可以帮忙吗?
答案 0 :(得分:17)
1。尝试更新matplotlib
python -m pip install -U matplotlib
2. 尝试重新安装matplotlib
python -m pip uninstall matplotlib
python -m pip install -U matplotlib
以下代码段打印到控制台是什么?
python -c "import matplotlib"
答案 1 :(得分:6)
由于依赖性差,我今天遇到了这个问题。
如果您同时拥有backports.shutil_get_terminal_size
和。{
backports.functools_lru_cache
已安装,您可以遇到此问题。
Matplotlib有一个简单的循环导入解决方法:
# cbook must import matplotlib only within function
# definitions, so it is safe to import from it here.
from . import cbook
直到PR #10483,
matplotlib依赖于backports.functools_lru_cache
。
然而,ipython取决于backports.shutil_get_terminal_size
和
that package doesn't set up a namespace package
properly
如果您遇到此问题,您会看到以下症状:
>>> import backports
<module 'backports.shutil_get_terminal_size' from '/Users/whughes/miniconda2/envs/scratch/lib/python2.7/site-packages/backports/shutil_get_terminal_size/__init__.pyc'>
>>> >import backports.functools_lru_cache
ImportError: No module named functools_lru_cache
backports.shutil_get_terminal_size
的问题在于它
没有定义命名空间包,所以它打破了任何其他包
backports.foo
个套餐。
重新安装matplotlib可以修复此问题,因为它会更改顺序
sys.path
,先放backports.functools_lru_cache
,然后再放{}
package定义了一个合适的命名空间。
您还可以通过重新安装backports.shutil_get_terminal_size
来解决此问题。
答案 2 :(得分:1)
我的经验是要注意matplotlib的版本。今天的最新版本是3.3,并存在此问题。因此,我指定了适用于我的先前版本:
pip install matplotlib==3.2.2
答案 3 :(得分:0)
答案 4 :(得分:0)
仅分享我的经验,我试图使用matplotlib运行Python代码(2.7)。该代码在基于Debian 10映像的docker容器中运行。
最后,我根据这里的答案给出了解决方案,但是有一个小警告。我必须按照以下顺序进行操作:
dockerfile上的代码如下:
RUN pip2 install -r requirements.txt
RUN pip2 install matplotlib
RUN pip2 install arrow
RUN pip2 uninstall -y backports.functools_lru_cache
RUN pip2 install backports.functools_lru_cache==1.2.1
您可以在github上找到整个项目:https://github.com/n3if/irassh.git
答案 5 :(得分:0)
转到/usr/local/lib/python2.7/dist-packages/matplotlib
并删除__init__.py
如果这些文件不止一个,请删除所有文件...它会起作用。
为了您的信心,请先将它们保存在其他地方:)
看到你的错误信息,显示目录,文件是写在那里的init构造函数
答案 6 :(得分:-1)
工作...
pip install --user matplotlib==2.0.2