Как вы можете получить язык / язык системы по умолчанию в Python-приложении, упакованном в Mac OS X? - PullRequest
0 голосов
/ 18 января 2011

Я написал простое приложение wxPython, которое я упаковал с py2app, превратив его в автономный пакет .app с двойным щелчком, который я могу дать другим людям для запуска.

Мое приложение использует некоторые специфичные для локали настройки - в частности, оно хочет проанализировать даты в текстовой форме - поэтому оно позволяет пользователю указать, какую локаль использовать, и вызывает locale.getdefaultlocale (), чтобы предварительно заполнить этот выбор.

Я проверил это, запустив код Python напрямую (в Python, установленном системой, не упакованный), и он работал нормально, затем я упаковал его с py2app и протестировал получающееся автономное приложение с помощью "open dist / foo.app "И это работало нормально. Тогда я дал это кому-то еще, и они пожаловались, что это немедленно бросило исключение; Я попытался дважды щелкнуть мой .app в Finder, и вот, locale.getdefaultlocale () действительно возвращает None (исключение произошло из-за того, что я сделал вызов метода для этого объекта).

Я написал простое тестовое приложение, которое выдает дамп среды и значение locale.getdefaultlocale (), и запускал его в тех же 3 средах. Результаты: - вызывать напрямую из терминала как "python envdump.py": выводит всю мою среду - пакет с py2app, вызывается из терминала как "open dist / envdump.app": выводит всю мою среду - вызвать тот же dist / envdump.app, открыв его из Finder: среда гораздо более ограничена, и да, locale.getdefaultlocale () возвращает (None, None), потому что LANG не установлен.

Полный список переменных среды, заданных Finder: ARGVZERO, Apple_PubSub_Socket_Render, COMMAND_MODE, DISPLAY, EXECUTABLEPAT, HOME, LOGNAME, PATH, PYTHONPATH, RESOURCEPATH, SHELL, SSH_AUTH_ING_XER_TEXT_SUS_TEX_SUS_TUS_SUS_TUS_TUSKTUSKTUSK

Я легко могу заставить свой код терпеть отсутствие LANG / locale.getdefaultlocale (), но я бы хотел как-то получить эту информацию.

1 Ответ

1 голос
/ 18 января 2011

Значения переменных среды для запускаемых приложений (скажем, двойным щелчком мыши) не такие, как при запуске под оболочкой окна терминала. Есть способ указать их, создав ~/.MacOSX/environment.plist: см. здесь для более подробной информации. Но это, вероятно, не то, что вы хотите сделать. Если вам нужно создать значение по умолчанию для вашего приложения, вы можете добавить его в список приложений, как описано здесь .

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