Re-posting -- for some reason this didn't seem to show up in the list.
-Chris
-------- Original Message --------
Subject: Re: [Pythonmac-SIG] py2app and stripped os.environ
Date: Tue, 15 Mar 2011 13:09:28 -0400
From: Ronald Oussoren <ronaldousso...@mac.com>
To: Christopher Barker <chris.bar...@noaa.gov>
CC: pythonmac-sig@python.org
On 15 Mar, 2011, at 11:57, Christopher Barker wrote:
On 3/15/11 6:11 AM, Ronald Oussoren wrote:
Once deployed as .app using py2app, I am not getting all the env vars that are
available to users.
That's on OSX issue, and not a problem in py2app. Most of the environment
variables you see from the command-line are initialized by the shell and/or
Terminal.app and are not available to GUI applications. You'd see the same
issue with a native application.
Indeed, and we did explain that to the OP on the wxPython list.
It would have been nice if he'd mentioned that in his post here.
However, it seems that it is fairly common that folks write applications that
call command line utilities. In this case, they need the environment to be set
up the way that it is in the user's default shell. I suggest that it might be
nice to have an option for py2app to build an app that will initialize the
environment that a user would see in their standard shell.
That is non-trivial, especially when the user has specified a different
shell in the Terminal preferences. To get the right environment you'd
probably have to:
* Reverse engineer the default shell created by Terminal.app
* Parse the environment plist file (I don't recall the name, but have an
PyObjC example that uses is)
* Run 'login -f USER' in a subprocess, then run the "env" command using
that shell
All of this should be done in a bootstrap script (in py2app), and code
should then be added to the distutils command to ensure that the script
gets included when an option is specified (lets say,
"--emulate-shell-environment")
All of this is definitely possible, but I don't know when I'll get
around to doing it.
If someone can write a function that fetches the information I can
easily integrate it into py2app. This should be a function that takes no
arguments and updates os.environ, something like:
.. def _emulate_shell_environment():
.. import os
.. os.environ['KEY'] = 'value'
BTW. I've filed issue #15 for this, to ensure the request doesn't get
lost
(<https://bitbucket.org/ronaldoussoren/py2app/issue/15/py2app-should-have-way-to-emulate-shell>)
Ronald
--
Christopher Barker, Ph.D.
Oceanographer
Emergency Response Division
NOAA/NOS/OR&R (206) 526-6959 voice
7600 Sand Point Way NE (206) 526-6329 fax
Seattle, WA 98115 (206) 526-6317 main reception
chris.bar...@noaa.gov
_______________________________________________
Pythonmac-SIG maillist - Pythonmac-SIG@python.org
http://mail.python.org/mailman/listinfo/pythonmac-sig
unsubscribe: http://mail.python.org/mailman/options/Pythonmac-SIG