为什么matplotlib图中的保存按钮不起作用?

11 投票
4 回答
5147 浏览
提问于 2025-04-16 04:01

我在Mac OS X 10.6上安装了matplotlib 1.0.0,并在Python 2.7的虚拟环境中使用。创建图表没有问题。但是,每当我按下保存按钮时,我无法在保存对话框中输入文本,也无法保存图表。唯一能做的就是点击取消。有人知道这是什么原因吗?怎么解决?

alt text

Matplotlib安装过程

我通过克隆astraw的matplotlib GitHub库来安装matplotlib,然后大致按照HyperJeff的numpy/scipy/matplotlib安装说明进行操作。下面是我在编译和安装之前修改的setup.cfgmake.osx的相关部分。

setup.cfg

[egg_info]
tag_svn_revision = 1

[directories]
basedirlist = /Users/matthew/.virtualenvs/matplotlib-test

[status]
#suppress = True
#verbose = True

[provide_packages]

[gui_support]
#gtk = False
#gtkagg = False
#tkagg = False
wxagg = False
#macosx = False

[rc_options]
backend = MacOSX
#numerix = numpy

make.osx

# build mpl into a local install dir with
PREFIX=/Users/matthew/.virtualenvs/matplotlib-test
MPLVERSION=1.0rc1
PYVERSION=2.7
PYTHON=python${PYVERSION}
ZLIBVERSION=1.2.3
PNGVERSION=1.2.39
FREETYPEVERSION=2.3.11
MACOSX_DEPLOYMENT_TARGET=10.6
OSX_SDK_VER=10.6
ARCH_FLAGS="-arch i386-arch x86_64"

## You shouldn't need to configure past this point (but I did...)

PKG_CONFIG_PATH="${PREFIX}/lib/pkgconfig"
CFLAGS="${ARCH_FLAGS} -I${PREFIX}/include -I${PREFIX}/include/freetype2 -isysroot /Developer/SDKs/MacOSX${OSX_SDK_VER}.sdk"
LDFLAGS="${ARCH_FLAGS} -L${PREFIX}/lib -syslibroot,/Developer/SDKs/MacOSX${OSX_SDK_VER}.sdk"

PKG_CONFIG_PATH="${PREFIX}/lib/pkgconfig"
CFLAGS="-arch i386 -arch x86_64 -I${PREFIX}/include -I${PREFIX}/include/freetype2 -isysroot /Developer/SDKs/MacOSX${OSX_SDK_VER}.sdk"
LDFLAGS="-arch i386 -arch x86_64 -L${PREFIX}/lib -syslibroot,/Developer/SDKs/MacOSX${OSX_SDK_VER}.sdk"
FFLAGS="-arch i386 -arch x86_64"

在修改了setup.cfgmake.osx后,我执行了以下命令来安装matplotlib:

make -f make.osx fetch deps mpl_build mpl_install
python setup.py install

注意:因为我是在虚拟环境中安装,所以不需要使用sudo,而不是像HyperJeff那样安装到site-packages中。

Python安装

我使用python.org的Python 2.7 PPC/i386/x86-64 Mac OS X Installer Disk Image for Mac OS X 10.5安装了Python 2.7。根据Ned Deily在这个SO问题上的回答,我知道这个版本的Python 2.7无法在Mac OS X 10.6上运行IDLE或Tkinter。

问题

  1. 我安装的这个Python 2.7版本会是问题的原因吗?我应该使用Python 2.7 32-bit Mac OS X Installer Disk Image for Mac OS X 10.3 through 10.6重新安装Python 2.7吗?
  2. 我需要在setup.cfg中配置其他的gui_support选项,然后重新编译matplotlib吗?

更新,2010年9月13日,下午3:33

似乎其他Mac OS X和matplotlib用户也遇到了同样的问题。在matplotlib用户邮件列表中,有两个用户在Mac OS X 10.5上报告了同样的问题。不过,他们使用的是matplotlib 0.99.1.1和0.99.1.2,而我安装的是matplotlib 1.0.0。

更新,2010年9月14日,上午8:18

matplotlib bug 2973874在2010年3月20日被提出,问题是一样的。不过,它的优先级是5,自从这个bug被提出后就没有被修改过。以下是这个bug的描述:

我在64位Mac上运行6.0.1的Enthought Python发行版。如果我运行一个图表并点击保存,会弹出一个保存对话框,但我无法在文件名字段中输入文本。我可以选择一个已有的文件,但仍然无法修改名称。如果我选择一个非png文件,它不会被覆盖。我得到的是一个同名但扩展名为png的文件。

4 个回答

1

要解决这个问题:

可以用 conda install python.app 来安装 pythonw

然后在你的终端里用 pythonw 替代 python

比如:

pythonw my_plot.py

希望这能帮到你

1

我的回答虽然不能直接解决问题,但可以轻松绕过它!你可以在终端里创建一个新的文件,确保这个文件的扩展名是正确的。然后你可以在matplotlib窗口里用鼠标选择这个文件,并把它覆盖掉。

7

你需要让OSX(苹果电脑的操作系统)相信这个虚拟环境其实是从一个应用程序包里运行的。这里讨论了如何解决这个问题:

http://groups.google.com/group/python-virtualenv/browse_thread/thread/83fa4a12d22a30c8/744e19c194f1618a

具体的实现可以在这里找到:

https://github.com/gldnspud/virtualenv-pythonw-osx

撰写回答