[Pythonmac-SIG] py2app crash if path contains a colon

Bob Ippolito 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"
FreeBSD 6.0-RELEASE
/usr/home/bob/src/python/:colon
'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/ 
home/bob/src/python/', 'colon/Modules']

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.

-bob


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
> sys.path"
> '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/',
> 'colon/Modules']
>
> -bob
>
> 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[0] looks correct (including the colon in
>> test:dir).
>>
>> Ronald
>>
>> 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 -
>>>> thanks!
>>>>
>>>> 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
>>>> allow
>>>> the user to use a colon in file names, but other applications do.
>>>> According
>>>> 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  
>>> variables).
>>> 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.
>>>
>>> -bob
>>>
>>> _______________________________________________
>>> Pythonmac-SIG maillist  -  Pythonmac-SIG at python.org
>>> http://mail.python.org/mailman/listinfo/pythonmac-sig
>>>
>>>
>
> _______________________________________________
> Pythonmac-SIG maillist  -  Pythonmac-SIG at python.org
> http://mail.python.org/mailman/listinfo/pythonmac-sig



More information about the Pythonmac-SIG mailing list