Почему кнопка сохранения не работает на графике matplotlib? - PullRequest
10 голосов
/ 12 сентября 2010

У меня установлена ​​ matplotlib 1.0.0 в Python 2.7 virtualenv на Mac OS X 10.6. Я могу создавать сюжеты нормально. Однако всякий раз, когда я нажимаю кнопку Сохранить , я не могу набирать текст в диалоговом окне сохранения и не могу сохранить график. Единственное, что я могу сделать, это нажать «Отмена». Любые мысли о том, что вызывает это и как это исправить?

alt text

Процедура установки Matplotlib

Я установил matplotlib путем клонирования astraw's matplotlib github repository и затем свободно следуя Инструкциям по установке HyperJeff для numpy / scipy / matplotlib . Ниже приведены потенциально важные разделы setup.cfg и make.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.cfg и make.osx я выполнил следующие команды для установки matplotlib:

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

Примечание: sudo не требуется, поскольку я устанавливаю в virtualenv вместо пакетов сайта, как это делает HyperJeff.

Установка Python

Я установил Python 2.7 с помощью python.org Python 2.7 PPC / i386 / x86-64 Образ диска установщика Mac OS X для Mac OS X 10.5 . Благодаря ответу Неда Дейли на этот вопрос я знаю, что эта версия Python 2.7 не может запускать IDLE или Tkinter в Mac OS X 10.6.

Вопросы

  1. Может ли быть причиной проблемы версия Python 2.7, которую я установил? Нужно ли переустанавливать Python 2.7 с помощью Python 2.7 32-битного образа установщика Mac OS X для Mac OS X с 10.3 по 10.6 ?
  2. Есть ли другая опция gui_support, которую мне нужно настроить в setup.cfg и затем перекомпилировать matplotlib?

Обновление от 13 сентября 2010 г., 15:33

Похоже, что другие пользователи Mac OS X и matplotlib сталкиваются с той же проблемой. В списке рассылки matplotlib-users, два пользователя сообщили, что имеют ту же проблему в Mac OS X 10.5 . Хотя они запускали matplotlib 0.99.1.1 и 0.99.1.2 по сравнению с matplotlib 1.0.0, который я установил.

Обновлено 14 сентября 2010 г., 8:18

Ошибка matplotlib 2973874 была открыта 20 марта-10 с той же проблемой. Тем не менее, это приоритет 5 и не был изменен, так как ошибка была первоначально открыта. Ниже приведено описание ошибки:

Я использую 64-битный Mac с дистрибутивом python 6.0.1. Если запустить график и нажать «Сохранить», откроется диалоговое окно сохранения, я не могу ввести текст в поле имени файла. Я могу выбрать существующий файл, но все еще не могу изменить имя. Если я выбираю не PNG-файл, он не перезаписывается. Я получаю файл с тем же именем, но с расширением png.

Ответы [ 4 ]

7 голосов
/ 24 января 2011

Вам нужно убедить OSX, что virtualenv на самом деле работает из комплекта приложений.Исправление обсуждалось здесь:

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

И реализовано здесь:

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

1 голос
/ 21 июля 2017

Чтобы решить это:

Используйте conda install python.app для установки pythonw.

Затем используйте pythonw вместо python в вашем терминале.

1011 * Е.Г. *

pythonw my_plot.py

Надеюсь, это поможет

1 голос
/ 29 января 2013

Мой ответ не решает проблему, но может легко ее обойти! Вы можете коснуться нового файла с правильным расширением файла в терминале. После того, как вы сможете выбрать этот файл с помощью мыши внутри окна matplotlib и перезаписать его.

0 голосов
/ 09 мая 2014

Для тех, у кого метод Туиса не сработал:

Я заметил, что простой обходной путь - это изменение бэкэнда matplotlib. Вот список доступных бэкэндов:

http://matplotlib.org/faq/usage_faq.html#what-is-a-backend

Обратите внимание, что вы должны выбрать один из них (то есть тех, которые поддерживают команду show()). Возможно, вам потребуется установить бэкэнд, но у вас может быть установлено несколько.

Для этого:

import matplotlib
matplotlib.use('Qt4Agg')    #replace 'Qt4Agg' with desired backend

Предупреждение. Это следует делать ПЕРЕД импортом pylab и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...