]> granicus.if.org Git - python/commitdiff
1. When a module is run from an EditorWindow, if its directory is not in
authorKurt B. Kaiser <kbk@shore.net>
Thu, 15 May 2003 23:23:21 +0000 (23:23 +0000)
committerKurt B. Kaiser <kbk@shore.net>
Thu, 15 May 2003 23:23:21 +0000 (23:23 +0000)
   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
Lib/idlelib/ScriptBinding.py

index 5f9554a5a7758cbfc57485106dccf4d24d92b6d7..d978fc2138693ca972794866ed9af3800b6e82f7 100644 (file)
@@ -526,6 +526,18 @@ class ModifiedInterpreter(InteractiveInterpreter):
         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 @@ class PseudoFile:
 
 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()
index d404fc90cecb4bf0022b476ac4a7e4b86d8ff30e..252526d5630434fbb02705393dd26efddc409dbf 100644 (file)
@@ -144,8 +144,9 @@ class ScriptBinding:
             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):