diff --git a/Lib/idlelib/PyShell.py b/Lib/idlelib/PyShell.py index 5f9554a5a77..d978fc21386 100644 --- a/Lib/idlelib/PyShell.py +++ b/Lib/idlelib/PyShell.py @@ -526,6 +526,18 @@ def stuffsource(self, source): linecache.cache[filename] = len(source)+1, 0, lines, 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): """Extend base class method: Add Colorizing @@ -1069,9 +1081,9 @@ def isatty(self): usage_msg = """\ -USAGE: idle [-deis] [-t title] [file]* - idle [-ds] [-t title] (-c cmd | -r file) [arg]* - idle [-ds] [-t title] - [arg]* +USAGE: idle [-deins] [-t title] [file]* + idle [-dns] [-t title] (-c cmd | -r file) [arg]* + idle [-dns] [-t title] - [arg]* -h print this help message and exit -n run IDLE without a subprocess (see Help/IDLE Help for details) @@ -1234,6 +1246,7 @@ def main(): if cmd: shell.interp.execsource(cmd) elif script: + shell.interp.prepend_syspath(script) shell.interp.execfile(script) root.mainloop() root.destroy() diff --git a/Lib/idlelib/ScriptBinding.py b/Lib/idlelib/ScriptBinding.py index d404fc90cec..252526d5630 100644 --- a/Lib/idlelib/ScriptBinding.py +++ b/Lib/idlelib/ScriptBinding.py @@ -144,8 +144,9 @@ def run_module_event2(self, interp, filename, code): if (not _sys.argv or _basename(_sys.argv[0]) != _basename(_filename)): _sys.argv = [_filename] - del _filename, _sys, _basename - \n""" % `filename`) + del _filename, _sys, _basename + \n""" % `filename`) + interp.prepend_syspath(filename) interp.runcode(code) def getfilename(self):