UNABLE TO GET IDLE TO RUN
Peter Otten
__peter__ at web.de
Tue Oct 27 04:15:34 EDT 2015
Terry Reedy wrote:
> On 10/26/2015 9:55 AM, Peter Otten wrote:
>
>> The "bug" or misfeature is that idle automatically adds the working
>> directory to sys.path.
>
> I am not sure what you mean by 'working directory' here.
After
$ cd /foo/bar
the working directory is
/foo/bar
> When one runs a
> program with 'python somepath/file.py', python prepends somepath to
> sys.path.
If /foo/bar contains a string.py (for example) module and you run the
following sequence
$ cd /foo/bar
$ python3 /usr/bin/idle3
/foo/bar/string.py will shade string.py from the standard library. The
relevant code in idle is
https://hg.python.org/cpython/file/tip/Lib/idlelib/PyShell.py#l1522
"""
else:
dir = os.getcwd()
if dir not in sys.path:
sys.path.insert(0, dir)
"""
I think this is a misfeature.
>> Ideally the editor should see the unaltered path
>
> I don't know what you mean here. The editor does not look as sys.path.
idle should see the sys.path as it was before inserting os.getcwd().
>> while scripts started from within idle might be allowed to import from
>> the working directory.
>
> Programs run from the editor are intended to run as much as possible the
> same as if run from a command line. To do this, IDLE must prepend
> somepath to sys.path the same as python itself does. As a result, if
> somepath/file.py contains
>
> import sys
> print(sys.path)
>
> then when run, sys.path starts with os.abspath(somepath).
Yes, if inside the shell shown by idle the user types
>>> import string
this should import /foo/bar/string.py rather than the stdlib version.
Different behaviour for "idle the editor" and "idle the shell" is of course
only possible if both use distinct processes. I don't know idle's
architecture, so I cannot say if that's already the case or if it would
require a major rewrite.
More information about the Python-list
mailing list