From 11659ade1e63095ac6217b4e190c14b494ddcf82 Mon Sep 17 00:00:00 2001 From: "Kurt B. Kaiser" Date: Thu, 15 May 2003 23:23:21 +0000 Subject: [PATCH] 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 --- Lib/idlelib/PyShell.py | 19 ++++++++++++++++--- Lib/idlelib/ScriptBinding.py | 5 +++-- 2 files changed, 19 insertions(+), 5 deletions(-) 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):