ImportError:没有名为_gdbm的模块 matplotlib pickle

7 投票
1 回答
2458 浏览
提问于 2025-04-17 21:48

自从 matplotlib 1.3 版本开始,matplotlib 的图形可以被保存成一种叫做 pickle 的格式。

我在 StackOverflow 上找到一个例子,想试试看:

import matplotlib.pyplot as plt
import numpy as np
import pickle

ax = plt.subplot(111)
x = np.linspace(0, 10)
y = np.exp(x)
plt.plot(x, y)
pickle.dump(ax, file('myplot.pickle', 'w'))

来源:存储和重新加载 matplotlib.pyplot 对象

但是我遇到了以下错误:

Traceback (most recent call last):
  File "D:/Work/Programming/Experimental/picklematplotlib/main.py", line 15, in <module>
    pickle.dump(ax, file)
  File "C:\Python32\lib\site-packages\six.py", line 116, in __getattr__
    _module = self._resolve()
  File "C:\Python32\lib\site-packages\six.py", line 105, in _resolve
    return _import_module(self.mod)
  File "C:\Python32\lib\site-packages\six.py", line 76, in _import_module
    __import__(name)
  File "C:\Python32\lib\dbm\gnu.py", line 3, in <module>
    from _gdbm import *
ImportError: No module named _gdbm

我使用的是 matplotlib-1.3.1.win-amd64.py3.2.exe 版本,搭配 python3.2 在一台 64 位的 Windows 机器上。

根据这个链接:http://docs.python.org/2/library/gdbm.html,在 python3 中 gdbm 被称为 dbm.gnu。

所以我想知道这是 matplotlib 的软件bug,还是我该怎么做才能让它正常工作。

令人惊讶的是,.pickle 文件是成功创建并且可以使用的。

这意味着,程序在写完 .pickle 文件后就直接崩溃了。

1 个回答

0

把matplotlib更新到1.3.1版本后,你发的脚本就不会报错了(使用的是Python 2.7.6)。

撰写回答