Раздражающее сообщение при открытии окон из Python на OS X 10.8
Всякий раз, когда я запускаю Python script, который открывает любое окно в OS X 10.8, будь то окно GLUT или QT или что-то еще, я получаю сообщение, которое выглядит так:
2013-09-11 14:36:53.321 Python[3027:f07] ApplePersistenceIgnoreState: Existing state will not be touched. New state will be written to /var/folders/0x/25_70mj17tb1ypm1c_js8jd40000gq/T/org.python.python.savedState
Я использую python2.7, установленный через MacPorts.
Это незначительная досада, но мне любопытно узнать, что означает сообщение, и есть ли что-нибудь, что я могу сделать, чтобы это предотвратить. Это связано с неправильной конфигурацией моей системы или все это получают?
Ответы
Ответ 1
Отвечая на мой собственный вопрос, спасибо @Steve Barnes за то, что он дал мне подсказку. Кажется, эта проблема может быть решена с помощью команды терминала
$ defaults write org.python.python ApplePersistenceIgnoreState NO
Я точно не знаю, что делает эта команда, но, сделав это некоторое время назад, я не наблюдал никаких негативных последствий.
Обратите внимание, что другой пользователь указал, что это может вызвать ошибку с python 3.4 на горном льве, где диалоги tkinter не закрываются при нажатии кнопки, как можно было бы ожидать.
$ defaults write org.python.python ApplePersistenceIgnoreState YES
отменит команду, если у вас возникнут проблемы.
Ответ 2
Правильная команда для запуска:
defaults write org.python.python ApplePersistenceIgnoreState NO
Это сообщение появляется из-за функции "возобновления приложения" в новых версиях OS X. Ясно, что это не является полезной функцией для большинства программ Python (в моем случае, для печати данных с помощью matplotlib), поэтому мы можем просто превратить это с помощью приведенной выше команды.
Для получения дополнительной информации о том, что действительно делает defaults write
, ознакомьтесь с справочной страницей.
Ответ 3
При запуске дистрибутива anaconda python требуется немного другая запись:
defaults write com.continuum.python ApplePersistenceIgnoreState NO