diff --git a/Lib/idlelib/PyShell.py b/Lib/idlelib/PyShell.py
index e3605ac..687b539 100644
--- a/Lib/idlelib/PyShell.py
+++ b/Lib/idlelib/PyShell.py
@@ -319,9 +319,15 @@
             # 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)
diff --git a/Lib/idlelib/idle b/Lib/idlelib/idle
index 8638a16..131e8d3 100755
--- a/Lib/idlelib/idle
+++ b/Lib/idlelib/idle
@@ -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()
diff --git a/Lib/idlelib/idle.py b/Lib/idlelib/idle.py
index 8638a16..131e8d3 100644
--- a/Lib/idlelib/idle.py
+++ b/Lib/idlelib/idle.py
@@ -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()
diff --git a/Lib/idlelib/idle.pyw b/Lib/idlelib/idle.pyw
index 8638a16..131e8d3 100644
--- a/Lib/idlelib/idle.pyw
+++ b/Lib/idlelib/idle.pyw
@@ -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()
diff --git a/Lib/idlelib/setup.py b/Lib/idlelib/setup.py
index 8a4ffa6..e10b3e8 100644
--- a/Lib/idlelib/setup.py
+++ b/Lib/idlelib/setup.py
@@ -46,14 +46,14 @@
         # 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 @@
         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 @@
       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)]
       )
