导入错误:找不到名为_gdbm的模块,matplotlib和pickle

7
自 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版本的matplotlib,与python3.2一起在64位Windows机器上运行。
根据http://docs.python.org/2/library/gdbm.html,在Python3中,gdbm被命名为dbm.gnu。因此,这是matplotlib的软件错误还是我需要做什么才能使其工作?
令人惊讶的是.pickle文件已经被创建并且可以使用。这意味着程序在写入.pickle文件后直接崩溃。

你找到解决方案了吗? - Basic
不,我认为在 matplotlib 1.3 中 pickle 的用法并不成熟。也许随着 mpl 1.4 的推出情况已经有所改变了。 - der_die_das_jojo
单独更新six包,不要与其他包一起更新。如果仍然有问题,请向six提交错误报告,并提供一个不需要matplotlib的示例。 - Dima Tisnek
1个回答

0

升级到matplotlib版本1.3.1,您发布的脚本不会出现任何错误(使用Python 2.7.6)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接