Commit 11659ade authored by Kurt B. Kaiser's avatar Kurt B. Kaiser

1. When a module is run from an EditorWindow, if its directory is not in

   sys.path, prepend it.  This allows the module to import other modules
   in the same directory.  Do the same for a script run from the command
   line.
2. Tweak the IDLE usage message a bit more.

SF Bug 706860 (closed)
SF Patch 686254 (reject specific solution)
SF Patch 507327 (similar)

M PyShell.py
M ScriptBinding.py
parent 8f570a76
...@@ -526,6 +526,18 @@ class ModifiedInterpreter(InteractiveInterpreter): ...@@ -526,6 +526,18 @@ class ModifiedInterpreter(InteractiveInterpreter):
linecache.cache[filename] = len(source)+1, 0, lines, filename linecache.cache[filename] = len(source)+1, 0, lines, filename
return filename return filename
def prepend_syspath(self, filename):
"Prepend sys.path with file's directory if not already included"
self.runcommand("""if 1:
_filename = %s
import sys as _sys
from os.path import dirname as _dirname
_dir = _dirname(_filename)
if not _dir in _sys.path:
_sys.path.insert(0, _dir)
del _filename, _sys, _dirname, _dir
\n""" % `filename`)
def showsyntaxerror(self, filename=None): def showsyntaxerror(self, filename=None):
"""Extend base class method: Add Colorizing """Extend base class method: Add Colorizing
...@@ -1069,9 +1081,9 @@ class PseudoFile: ...@@ -1069,9 +1081,9 @@ class PseudoFile:
usage_msg = """\ usage_msg = """\
USAGE: idle [-deis] [-t title] [file]* USAGE: idle [-deins] [-t title] [file]*
idle [-ds] [-t title] (-c cmd | -r file) [arg]* idle [-dns] [-t title] (-c cmd | -r file) [arg]*
idle [-ds] [-t title] - [arg]* idle [-dns] [-t title] - [arg]*
-h print this help message and exit -h print this help message and exit
-n run IDLE without a subprocess (see Help/IDLE Help for details) -n run IDLE without a subprocess (see Help/IDLE Help for details)
...@@ -1234,6 +1246,7 @@ def main(): ...@@ -1234,6 +1246,7 @@ def main():
if cmd: if cmd:
shell.interp.execsource(cmd) shell.interp.execsource(cmd)
elif script: elif script:
shell.interp.prepend_syspath(script)
shell.interp.execfile(script) shell.interp.execfile(script)
root.mainloop() root.mainloop()
root.destroy() root.destroy()
......
...@@ -144,8 +144,9 @@ class ScriptBinding: ...@@ -144,8 +144,9 @@ class ScriptBinding:
if (not _sys.argv or if (not _sys.argv or
_basename(_sys.argv[0]) != _basename(_filename)): _basename(_sys.argv[0]) != _basename(_filename)):
_sys.argv = [_filename] _sys.argv = [_filename]
del _filename, _sys, _basename del _filename, _sys, _basename
\n""" % `filename`) \n""" % `filename`)
interp.prepend_syspath(filename)
interp.runcode(code) interp.runcode(code)
def getfilename(self): def getfilename(self):
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment