[Python-Dev] unicode imports
Bob Ippolito
bob at redivi.com
Sat Jun 17 08:55:51 CEST 2006
On Jun 16, 2006, at 9:44 PM, Nick Coghlan wrote:
> Bob Ippolito wrote:
>> There's a similar issue in that if sys.prefix contains a colon,
>> Python is also busted:
>> http://python.org/sf/1507224
>> Of course, that's not a Windows issue, but it is everywhere else.
>> The offending code in that case is Modules/getpath.c,
>
> Since it has to do with the definition of Py_GetPath as returning a
> single string that is really a DELIM separated list of strings,
> where DELIM is defined by the current platform (';' on Windows, ':'
> everywhere else), this seems more like a platform problem than a
> Python problem, though - you can't have directories containing a
> colon as an entry in PATH or PYTHONPATH either. It's not really
> Python's fault that the platform defines a legal filename character
> as the delimiter for path entries.
>
> The only real alternative I can see is to normalise Py_GetPath to
> always return a ';' delimited list of strings, regardless of
> platform, and update PySys_SetPath accordingly. That'd cause
> potential compatibility problems for embedded interpreters, though.
>
> I guess we could create a Py_GetPathEx and a PySys_SetPathEx that
> accepted the delimeters as arguments, and change the call in
> pythonrun.c from:
>
> PySys_SetPath(Py_GetPath())
>
> to:
>
> PySys_SetPathEx(Py_GetPathEx(';'), ';')
>
> (still an incompatible change, but an easier to manage one since
> you can easily provide different behavior for earlier versions of
> Python)
No, that doesn't fix anything at all. The right solution is not to
provide for a different delimiter, but allow for a list (probably too
early for PyObject* though) or array of some kind (e.g. int argc,
char **argv).
-bob
More information about the Python-Dev
mailing list