[Pythonmac-SIG] py2app crash if path contains a colon
bob at redivi.com
Thu Jun 15 23:12:04 CEST 2006
FWIW, this isn't at all Mac OS X specific..
$ uname -rs && pwd && ./python -c "import sys; print sys.path"
'import site' failed; use -v for traceback
['', '/usr/local/lib/python25.zip', '/usr/home/bob/src/python/',
'colon/../Lib/', '/usr/home/bob/src/python/', 'colon/../Lib/plat-
freebsd6', '/usr/home/bob/src/python/', 'colon/../Lib/lib-tk', '/usr/
The issue is of course that all this code is happening in C and
expecting ':' as the delimiter. Modules/getpath.c probably should be
refactored to use PyObject* ASAP, rather than doing it last.
On Jun 14, 2006, at 8:18 AM, Bob Ippolito wrote:
> python itself needs to be in a directory containing a colon.
> bump:~/src/python/:colon bob$ ./python.exe -c "import sys; print
> 'import site' failed; use -v for traceback
> ['', '/usr/local/lib/python25.zip', '/Users/bob/src/python/',
> 'colon/../Lib/', '/Users/bob/src/python/', 'colon/../Lib/plat-
> darwin', '/Users/bob/src/python/', 'colon/../Lib/plat-mac', '/Users/
> bob/src/python/', 'colon/../Lib/plat-mac/lib-scriptpackages', '/Users/
> bob/src/python/', 'colon/../Lib/lib-tk', '/Users/bob/src/python/',
> On Jun 14, 2006, at 2:51 AM, Ronald Oussoren wrote:
>> Could either of you file a bug about this (the sys.path mangling
>> when there's a colon in the directory that contains the executable)
>> on python's SF tracker? Preferably including decription of how to
>> reproduce this.
>> Bob, I've created a directory 'test:dir' and added a script named
>> 'test.py' in that directory that prints sys.path. If I run 'python
>> test:dir/test.py' sys.path looks correct (including the colon in
>> On Wednesday, June 14, 2006, at 10:21AM, Bob Ippolito
>> <bob at redivi.com> wrote:
>>> On Jun 12, 2006, at 4:52 PM, Bob Swerdlow wrote:
>>>> Hi, our app is using py2app 0.2.1 and we've been quite happy with
>>>> it -
>>>> However, we have found that it crashes if the application is
>>>> started in a
>>>> folder whose name contains a colon. Of course, the Finder does not
>>>> the user to use a colon in file names, but other applications do.
>>>> to the user:
>>> In Carbon APIs, these colons are represented by '/' (the POSIX path
>>> delimiter)... from Finder (and I think also at the lowest level HFS+
>>> APIs), that path looks like "6/10/06". Anything using the POSIX APIs
>>> is going to see "6:10:06" though.
>>>> Is this a known problem? Is there a work-around?
>>> It's a problem with Python actually, which persists even in the
>>> trunk. Probably because a colon is often treated as a delimiter
>>> for a
>>> list of paths (such as the PATH or PYTHONPATH environment
>>> If you run Python from a path containing ':' and look at sys.path,
>>> you'll see that the paths that would've contained a colon are
>>> mangled. I'm not sure where this happens and I don't have time to
>>> track it down at the moment.
>>> It won't be possible to work around this without patching the Python
>>> interpreter. For now you'll just have to tell your users Don't Do
>>> That. I can only think of two workarounds:
>>> (1) just tell the user that they can't run the app from a path
>>> containing a ":" in a relatively friendly manner (could be done in
>>> the py2app bootstrap).
>>> (2) make a symlink somewhere from the py2app bootstrap if a ":"
>>> is in
>>> the working directory and re-exec.
>>> I'm unlikely to do either of those things any time soon, but patches
>>> are accepted. If you come up with a patch for Python, file it on
>>> sourceforge and shoot a message referencing it here and someone will
>>> definitely apply it. I'd hurry up though, because Python 2.5 is
>>> pretty far along.
>>> Pythonmac-SIG maillist - Pythonmac-SIG at python.org
> Pythonmac-SIG maillist - Pythonmac-SIG at python.org
More information about the Pythonmac-SIG