]> granicus.if.org Git - python/commitdiff
M PyShell.py
authorKurt B. Kaiser <kbk@shore.net>
Tue, 24 Dec 2002 06:36:19 +0000 (06:36 +0000)
committerKurt B. Kaiser <kbk@shore.net>
Tue, 24 Dec 2002 06:36:19 +0000 (06:36 +0000)
M idle
M idle.py
M idle.pyw
M setup.py

Switch back to installing IDLE as a package.  The IDLE GUI and the
subprocess will both attempt to start up via the package mechanism, but if
IDLE is not yet installed it is possible to run by calling python idle.py
in the IDLE source directory, or to add the source directory to sys.path.

One advantage of doing it this way is IDLE stays off sys.path.

Developed in collaboration with Tony Lownds.

Lib/idlelib/PyShell.py
Lib/idlelib/idle
Lib/idlelib/idle.py
Lib/idlelib/idle.pyw
Lib/idlelib/setup.py

index e3605ac86812826bda20d4282dd3bc59af6fe9a5..687b5397ad306f9b89989122c059b8ae7acfa603 100644 (file)
@@ -319,9 +319,15 @@ class ModifiedInterpreter(InteractiveInterpreter):
             # XXX what about warnoptions?
             return [sys.executable, '-p', str(self.port)]
         else:
-            w = ['-W' + s for s in sys.warnoptions]        
-            return [sys.executable] + w \
-                 + ["-c", "__import__('run').main()", str(self.port)]
+            w = ['-W' + s for s in sys.warnoptions]
+            # Maybe IDLE is installed and is being accessed via sys.path,
+            # or maybe it's not installed and the idle.py script is being
+            # run from the IDLE source directory.
+            if __name__ == 'idlelib.PyShell':
+                command = "__import__('idlelib.run').run.main()"
+            else:
+                command = "__import__('run').main()"
+            return [sys.executable] + w + ["-c", command, str(self.port)]
 
     def start_subprocess(self):
         addr = ("localhost", self.port)
index 8638a165b4b64808cf9da3ef8e5d175f95be3943..131e8d3694a5744d8295b30f932588b6352f075d 100755 (executable)
@@ -1,4 +1,9 @@
 #! /usr/bin/env python
 
-import PyShell
-PyShell.main()
+try:
+    import idlelib.PyShell
+    idlelib.PyShell.main()
+except:
+    # IDLE is not installed, but maybe PyShell is on sys.path:
+    import PyShell
+    PyShell.main()
index 8638a165b4b64808cf9da3ef8e5d175f95be3943..131e8d3694a5744d8295b30f932588b6352f075d 100644 (file)
@@ -1,4 +1,9 @@
 #! /usr/bin/env python
 
-import PyShell
-PyShell.main()
+try:
+    import idlelib.PyShell
+    idlelib.PyShell.main()
+except:
+    # IDLE is not installed, but maybe PyShell is on sys.path:
+    import PyShell
+    PyShell.main()
index 8638a165b4b64808cf9da3ef8e5d175f95be3943..131e8d3694a5744d8295b30f932588b6352f075d 100644 (file)
@@ -1,4 +1,9 @@
 #! /usr/bin/env python
 
-import PyShell
-PyShell.main()
+try:
+    import idlelib.PyShell
+    idlelib.PyShell.main()
+except:
+    # IDLE is not installed, but maybe PyShell is on sys.path:
+    import PyShell
+    PyShell.main()
index 8a4ffa69bac68525d380d4eb76243260852c74ca..e10b3e8c55cc0d58bd45258f53e998744fdbbef5 100644 (file)
@@ -46,14 +46,14 @@ class IDLE_Builder(build_py):
         # Copies all .py files, then also copies the txt and gif files
         build_py.run(self)
         for name in txt_files:
-            outfile = self.get_plain_outfile(self.build_lib, [], name)
+            outfile = self.get_plain_outfile(self.build_lib, [pkgname], name)
             dir = os.path.dirname(outfile)
             self.mkpath(dir)
             self.copy_file(os.path.join(pkg_dir, name), outfile,
                            preserve_mode = 0)
         for name in Icons:
             outfile = self.get_plain_outfile(self.build_lib,
-                                             ["Icons"], name)
+                                             [pkgname, "Icons"], name)
             dir = os.path.dirname(outfile)
             self.mkpath(dir)
             self.copy_file(os.path.join("Icons", name),
@@ -71,11 +71,11 @@ class IDLE_Builder(build_py):
         if not include_bytecode:
             return outputs
         for name in txt_files:
-            filename = self.get_plain_outfile(self.build_lib, [], name)
+            filename = self.get_plain_outfile(self.build_lib, [pkgname], name)
             outputs.append(filename)
         for name in Icons:
             filename = self.get_plain_outfile(self.build_lib,
-                                              ["Icons"], name)
+                                              [pkgname, "Icons"], name)
             outputs.append(filename)
         return outputs
 
@@ -111,7 +111,6 @@ For further details, refer to idlefork.sourceforge.net.
       cmdclass = {'build_py':IDLE_Builder,
                   'install_lib':IDLE_Installer},
       package_dir = {pkgname: pkg_dir},
-      extra_path = pkgname,
-      py_modules = [f.split('.')[0] for f in glob.glob("*.py")],
+      packages = [pkgname],
       scripts = [os.path.join(pkg_dir, idle_name)]
       )