Ответ 1
Вам нужно убедить OSX, что virtualenv фактически запущен из Application Bundle. Исправлено обсуждение:
И реализовано здесь:
У меня matplotlib 1.0.0, установленный в виртуальной среде Python 2.7 на Mac OS X 10.6. Я могу создавать сюжеты в порядке. Однако всякий раз, когда я нажимаю кнопку "Сохранить", я не могу набирать текст в диалоговом окне сохранения и не могу сохранить график. Единственное, что я могу сделать, - это отменить отмену. Любые мысли о том, что вызывает это и как его исправить?
Я установил matplotlib, клонировав astraw matplotlib github repository, а затем свободно следуя Инструкции по установке HyperJeff для numpy/scipy/matplotlib. Ниже приведены потенциально релевантные разделы setup.cfg
и make.osx
, включая разделы, которые я изменил до компиляции и установки.
[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
# 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 2.7 с помощью python.org Python 2.7 PPC/i386/x86-64 Mac OS X Installer Disk Image для Mac OS X 10.5. Благодаря Ned Deily ответит на этот вопрос SO, я знаю, что эта версия Python 2.7 не может запускать IDLE или Tkinter в Mac OS X 10.6.
gui_support
, который мне нужно настроить в setup.cfg
, а затем перекомпилировать matplotlib?Похоже, что другие пользователи Mac OS X и matplotlib имеют одинаковую проблему. В списке рассылки matplotlib-пользователей два пользователя сообщили о том же неполадке в Mac OS X 10.5. Хотя они выполняли matplotlib 0.99.1.1 и 0.99.1.2 по сравнению с matplotlib 1.0.0, которые я установил.
matplotlib bug 2973874 был открыт 20 марта 10 с той же проблемой. Тем не менее, это приоритет 5 и не был изменен с тех пор, как ошибка была первоначально открыта. Ниже приведено описание ошибки:
Я запускаю 64-разрядный Macintosh с 64-разрядным Mac. Если запустите график и нажмите "Сохранить", я открою открытое диалоговое окно сохранения, я не могу ввести текст в поле имени файла. Я могу выбрать существующий файл, но не могу изменить имя. Если я выберу файл non png, он не перезапишет его. Я получаю файл с тем же именем, но с расширением png.
Вам нужно убедить OSX, что virtualenv фактически запущен из Application Bundle. Исправлено обсуждение:
И реализовано здесь:
Мой ответ не устраняет проблему, но может легко ее решить! Вы можете прикоснуться к новому файлу с правильным расширением файла в терминале. После того, как вы можете выбрать этот файл с помощью мыши в окне matplotlib и перезаписать его.
Для тех, у кого метод Thouis не работает:
Я заметил, что простая работа заключается в том, чтобы изменить базу данных matplotlib. Вот список доступных бэкэндов:
http://matplotlib.org/faq/usage_faq.html#what-is-a-backend
Обратите внимание, что вы должны выбрать один из средств рендеринга (т.е. те, которые поддерживают команду show()
). Возможно, вам потребуется установить бэкэнд, но у вас может быть несколько установленных.
Для этого:
import matplotlib
matplotlib.use('Qt4Agg') #replace 'Qt4Agg' with desired backend
Предупреждение: это должно быть сделано ПЕРЕД импортом pylab и т.д.
Чтобы решить эту проблему:
Используйте conda install python.app
для установки pythonw
.
Затем используйте pythonw
вместо python
в вашем терминале.
например.
pythonw my_plot.py
Надеюсь, что это поможет