簡體   English   中英

如何在Mac OS X上的py2app打包的Python應用程序中獲取系統默認的語言/語言環境?

[英]How can you get the system default language/locale, in a py2app packaged Python app on Mac OS X?

我寫了一個簡單的wxPython應用程序,將其與py2app打包在一起,將其變成一個可雙擊的自包含.app包,可以將其提供給其他人運行。

我的應用程序使用了一些特定於語言環境的設置-特別是它想以文本形式解析日期-因此它允許用戶指定要使用的語言環境,並調用locale.getdefaultlocale()來預先填充此選擇。

我通過直接運行python代碼(在系統安裝的Python中,未打包)進行了測試,並且工作正常,然后將其與py2app打包,並使用“ open dist / foo.app”測試了最終的自包含應用程序,工作正常。 然后我把它給了別人,他們抱怨說它立即引發了異常。 我嘗試在Finder中雙擊我的.app,瞧瞧,locale.getdefaultlocale()確實返回None(我在該對象上進行方法調用導致的異常)。

我編寫了一個簡單的測試應用程序,該應用程序轉儲環境和locale.getdefaultlocale()的值,並在相同的3個環境中運行它。 結果:-直接從終端以“ python envdump.py”調用:轉儲我的完整環境-包含py2app的軟件包,從終端以“ open dist / envdump.app”調用:轉儲我的整個環境-調用相同的dist / envdump.app通過從Finder打開它:環境更加受限制,是的,因為未設置LANG,所以locale.getdefaultlocale()返回(None,None)。

Finder設置的環境變量的完整列表為:ARGVZERO,Apple_PubSub_Socket_Render,COMMAND_MODE,DISPLAY,EXECUTABLEPAT,HOME,LOGNAME,PATH,PYTHONPATH,RESOURCEPATH,SHELL,SSH_AUTH_SOCK,TMPDIR,USER,__ CF_USER_TEXT_ENCODING。

我可以輕松地使我的代碼容忍缺少LANG / locale.getdefaultlocale(),但是我想以某種方式獲取該信息。

已啟動的應用程序(例如,雙擊)的環境變量值與在終端窗口外殼程序下運行時的環境變量值不同。 有一種方法可以通過創建~/.MacOSX/environment.plist進行指定:有關更多詳細信息,請參見此處 但這可能不是您想要的。 如果您需要為您的應用創建默認設置,則可以按此處所述將其添加到應用的plist中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM