2

我在 Win7 32 位(Python 版本是 2.7.3)上使用 PyDev 和 Eclipse。我还安装了 Scipy 和 Matplotlib。现在,我要做的是将绘制的数据保存为 pdf 文件。这是一个代码示例,尽管它与我的问题并不相关:

import scipy as sp
import matplotlib.pyplot as plt
from scipy.io import loadmat

fname = "calc.mat"
data = loadmat(fname)
train_acc, test_acc = data['train'], data['test']
# plot results
fig = plt.figure(1,figsize=(12,4))
fig.clf()

# plot the error
ax1 = fig.add_subplot(1,2,1)
ax1.boxplot(sp.hstack((train_acc, test_acc)))
plt.savefig('bcc.pdf')

代码非常简单:从 mat 文件加载一些数据,创建一个绘图并将其存储为图像。现在,当尝试在 Eclipse 中执行代码时,出现以下错误:

 File "C:\Users\Kseniya\workspace\BrainComputerInterfacing\src\bci.py", line 223, in test2
 fig = plt.figure(1,figsize=(12,4))
 File "C:\Programme\Python27\lib\site-packages\matplotlib\pyplot.py", line 343, in figure
**kwargs)
 File "C:\Programme\Python27\lib\site-packages\matplotlib\backends\backend_tkagg.py", line 79, in new_figure_manager
return new_figure_manager_given_figure(num, figure)
 File "C:\Programme\Python27\lib\site-packages\matplotlib\backends\backend_tkagg.py", line 96, in new_figure_manager_given_figure
icon_img = Tk.PhotoImage(file=icon_fname)
 File "C:\Programme\Python27\lib\lib-tk\Tkinter.py", line 3244, in __init__
Image.__init__(self, 'photo', name, cnf, master, **kw)
 File "C:\Programme\Python27\lib\lib-tk\Tkinter.py", line 3200, in __init__
self.tk.call(('image', 'create', imgtype, name,) + options)
_tkinter.TclError: couldn't open "C:\Programme\Python27\lib\site-packages\matplotlib\mpl-data\images\matplotlib.gif": no such file or directory

似乎找不到或无法打开文件 matplotlib.gif,尽管它存在。如果我从控制台运行脚本,我不会收到任何错误,并且脚本会在没有任何错误的情况下终止,从而正确创建图像文件。所以,这似乎是一个 PyDev 错误。有谁知道如何解决它?提前谢谢了!

4

1 回答 1

2

您已经在 Windows 的 Program files 文件夹下安装了 Python,这可能会导致这样的问题,即一个程序抱怨丢失的文件,而另一个程序则在那里向您显示该文件。

发生这种情况是因为 Windows 中的 UAC 系统试图在不完全拒绝写入访问的情况下保护文件夹免受写入。相反,它在某些情况下会将写入重定向到所谓的虚拟化文件夹。

将 Python 安装到默认位置 C:\Python27 可避免此问题。

于 2012-12-11T06:58:38.137 回答