Commit f4f42768 authored by Kurt B. Kaiser's avatar Kurt B. Kaiser

M PyShell.py

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.
parent 12bf339a
......@@ -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)
......
#! /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()
#! /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()
#! /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()
......@@ -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)]
)
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment