[Pythonmac-SIG] py2app : strange behavior maybe relative to encoding

Pierre Ratinaud ratinaud at univ-tlse2.fr
Tue Feb 19 22:37:27 CET 2013


Hi,
I have put this in my code :
     env = os.environ.copy()
     if sys.platform == 'darwin' and 'LC_ALL' not in env:
         env['LC_ALL'] = 'en_US.UTF-8'
and now I use Popen like this :
Popen(mycommand, env = env)
Maybe it's a little less suboptmal then changing user's environment :)
But it's not a definive solution cause I'm forcing a locale and I'm not 
sure it will work in every context... Time will say :)
Thank you for your help
Pierre

Le 18/02/2013 22:18, Ronald Oussoren a écrit :
> On 18 Feb, 2013, at 21:22, Pierre Ratinaud <ratinaud at univ-tlse2.fr> wrote:
>
>> Hi,
>>> I'm not sure. What kind of encoding error occurs? The exact error message might give a hint as to what's going on here.
>> The only message I had was in Console. The software I'm using with Popen (R) is complaining (in french) about encoding in my script.
>>
>> My tests and googling leave me to the conclusion that it is an environment problem :
>> in the working cases, locale.getpreferredencoding() give me fr_FR.UTF-8 but when double-clicking on the app it gives me us_US.ASCII.
>> In R, Sys.getlocale() give me :
>> "LC_CTYPE=fr_FR.UTF-8;LC_NUMERIC=C;LC_TIME=fr_FR.UTF-8;LC_COLLATE=fr_FR.UTF-8;LC_MONETARY=fr_FR.UTF-8;LC_MESSAGES=fr_FR.UTF-8;LC_PAPER=C;LC_NAME=C;LC_ADDRESS=C;LC_TELEPHONE=C;LC_MEASUREMENT=fr_FR.UTF-8;LC_IDENTIFICATION=C"
>> and just
>> "C" when double-clicking.
>> This happens with or without --emulate-shell-environment
>> So environment (locale) is not set when double-clicking on app. Also, setting locale in my R script resolves the problem, but it's not a solution in my case (a lot of R script to change). I am about to test setting locale in python (with the env option of Popen), but I need to reboot in OS X : )
>> Thanks for your help.
> The startup binary voor pyapp forces LC_CTYPE to en_US.UTF-8 during the call to Py_Initialize, and resets it to whatever it was before afterwards. This is primairly done to ensure a sane I/O encoding when using Python 3 (that is, for the '.UTF-8' bit).
>
> I can only test with 10.6 in a virtual machine, I should have some time later this week to do so (in particular to check what locale related environment variables are set automaticly there and to find why --emulate-shell-environmet doesn't pick those up).
>
> You can force the right settings by setting them yourself in your python script (os.environ['LC_CTYPE'] = 'fr_FR.UTF-8', etc., etc., before calling subprocess.Popen). That's suboptimal, but should at least give you a working program without changing all R scripts.
>
> Ronald
>
>> Regards
>> Pierre
>>
>>
>>
>> Le 18/02/2013 13:28, Ronald Oussoren a écrit :
>>> On 17 Feb, 2013, at 10:02, Pierre Ratinaud <ratinaud at univ-tlse2.fr> wrote:
>>>
>>>> Hi all,
>>>> I have create a .app with py2app for a wxpython application. The resulting app does not work as expected if I double click on it (it works but somewhere in the process, an encoding problem appear from another program called with os.popen). This problem does not occur if I launch my app directly with python, it does not occur if I launch the app by double-clic on myapp inside the .app and it does not occur if I open the .app from a terminal with the "open" command.
>>>> This is happening with python 2.7.2, wxpython2.9, py2app 0.7.3 under Mac OS X 10.6.8.
>>>> What am I missing ?
>>> I'm not sure. What kind of encoding error occurs? The exact error message might give a hint as to what's going on here.
>>>
>>> What's really strange is that double-clicking the app does not have the same behavior as calling the open command, I'd expect that those would be behave the same.
>>>
>>> Do you have a shell environment variable in your shell's profile (.profile/.bash_profile/...) that is needed by the other program? Those definitions aren't seen by applications launched through the Finger because the Finder doesn't read the shell's profile.   You could try to use " python setup.py py2app --emulate-shell-environment" to build the app bundle, that activates a hack that does try to read the shell environment.
>>>
>>> Ronald
>>>> thanks
>>>> Pierre
>>>>
>>>> _______________________________________________
>>>> Pythonmac-SIG maillist  -  Pythonmac-SIG at python.org
>>>> http://mail.python.org/mailman/listinfo/pythonmac-sig
>>>> unsubscribe: http://mail.python.org/mailman/options/Pythonmac-SIG
>>>
>>> -- 
>>> Pierre Ratinaud
>>> Maître de conférences
>>> Département des Sciences de l'Education et de la Formation
>>> Laboratoire LERASS : http://www.lerass.com/
>>> Université de Toulouse II - Le Mirail : http://www.univ-tlse2.fr/
>>> tel : 05 61 50 42 28
>
>
> -- 
> Pierre Ratinaud
> Maître de conférences
> Département des Sciences de l'Education et de la Formation
> Laboratoire LERASS : http://www.lerass.com/
> Université de Toulouse II - Le Mirail : http://www.univ-tlse2.fr/
> tel : 05 61 50 42 28


More information about the Pythonmac-SIG mailing list