diff options
Diffstat (limited to 'Lib/idlelib')
-rw-r--r-- | Lib/idlelib/PyShell.py | 38 | ||||
-rw-r--r-- | Lib/idlelib/help.txt | 13 |
2 files changed, 33 insertions, 18 deletions
diff --git a/Lib/idlelib/PyShell.py b/Lib/idlelib/PyShell.py index 6048503..5f9554a 100644 --- a/Lib/idlelib/PyShell.py +++ b/Lib/idlelib/PyShell.py @@ -332,7 +332,7 @@ class ModifiedInterpreter(InteractiveInterpreter): self.rpcclt = rpc.RPCClient(addr) break except socket.error, err: - print>>sys.__stderr__,"Idle socket error: " + err[1]\ + print>>sys.__stderr__,"IDLE socket error: " + err[1]\ + ", retrying..." else: display_port_binding_error() @@ -650,7 +650,6 @@ class PyShell(OutputWindow): menu_specs = [ ("file", "_File"), ("edit", "_Edit"), - ("shell", "_Shell"), ("debug", "_Debug"), ("options", "_Options"), ("windows", "_Windows"), @@ -661,6 +660,8 @@ class PyShell(OutputWindow): from IdleHistory import History def __init__(self, flist=None): + if use_subprocess: + self.menu_specs.insert(2, ("shell", "_Shell")) self.interp = ModifiedInterpreter(self) if flist is None: root = Tk() @@ -686,8 +687,9 @@ class PyShell(OutputWindow): text.bind("<<toggle-debugger>>", self.toggle_debugger) text.bind("<<open-python-shell>>", self.flist.open_shell) text.bind("<<toggle-jit-stack-viewer>>", self.toggle_jit_stack_viewer) - text.bind("<<view-restart>>", self.view_restart_mark) - text.bind("<<restart-shell>>", self.restart_shell) + if use_subprocess: + text.bind("<<view-restart>>", self.view_restart_mark) + text.bind("<<restart-shell>>", self.restart_shell) # self.save_stdout = sys.stdout self.save_stderr = sys.stderr @@ -810,7 +812,7 @@ class PyShell(OutputWindow): return self.shell_title COPYRIGHT = \ - 'Type "copyright", "credits" or "license" for more information.' + 'Type "copyright", "credits" or "license()" for more information.' def begin(self): self.resetoutput() @@ -1072,6 +1074,7 @@ USAGE: idle [-deis] [-t title] [file]* idle [-ds] [-t title] - [arg]* -h print this help message and exit + -n run IDLE without a subprocess (see Help/IDLE Help for details) The following options will override the IDLE 'settings' configuration: @@ -1120,6 +1123,7 @@ echo "import sys; print sys.argv" | idle - "foobar" def main(): global flist, root, use_subprocess + use_subprocess = True enable_shell = False enable_edit = False debug = False @@ -1131,7 +1135,7 @@ def main(): except AttributeError: sys.ps1 = '>>> ' try: - opts, args = getopt.getopt(sys.argv[1:], "c:deihr:st:") + opts, args = getopt.getopt(sys.argv[1:], "c:deihnr:st:") except getopt.error, msg: sys.stderr.write("Error: %s\n" % str(msg)) sys.stderr.write(usage_msg) @@ -1150,6 +1154,8 @@ def main(): sys.exit() if o == '-i': enable_shell = True + if o == '-n': + use_subprocess = False if o == '-r': script = a if os.path.isfile(script): @@ -1167,9 +1173,6 @@ def main(): if args and args[0] == '-': cmd = sys.stdin.read() enable_shell = True - - use_subprocess = True - # process sys.argv and sys.path: for i in range(len(sys.path)): sys.path[i] = os.path.abspath(sys.path[i]) @@ -1202,7 +1205,6 @@ def main(): fixwordbreaks(root) root.withdraw() flist = PyShellFileList(root) - if enable_edit: if not (cmd or script): for filename in args: @@ -1239,19 +1241,19 @@ def main(): def display_port_binding_error(): print """\ -IDLE cannot run. +\nIDLE cannot run. -IDLE needs to use a specific TCP/IP port (8833) in order to execute and -debug programs. IDLE is unable to bind to this port, and so cannot -start. Here are some possible causes of this problem: +IDLE needs to use a specific TCP/IP port (8833) in order to communicate with +its Python execution server. IDLE is unable to bind to this port, and so +cannot start. Here are some possible causes of this problem: 1. TCP/IP networking is not installed or not working on this computer - 2. Another program is running that uses this port + 2. Another program (another IDLE?) is running that uses this port 3. Personal firewall software is preventing IDLE from using this port -IDLE makes and accepts connections only with this computer, and does not -communicate over the internet in any way. Its use of port 8833 should not -be a security risk on a single-user machine. +Run IDLE with the -n command line switch to start without a subprocess +and refer to Help/IDLE Help "Running without a subprocess" for further +details. """ if __name__ == "__main__": diff --git a/Lib/idlelib/help.txt b/Lib/idlelib/help.txt index 7b31818..8bf15a1 100644 --- a/Lib/idlelib/help.txt +++ b/Lib/idlelib/help.txt @@ -191,3 +191,16 @@ Other preferences: Command line usage: Enter idle -h at the command prompt to get a usage message. + +Running without a subprocess: + + If IDLE is started with the -n command line switch it will run in a + single process and will not create the subprocess which runs the RPC + Python execution server. This can be useful if Python cannot create + the subprocess or the RPC socket interface on your platform. However, + in this mode user code is not isolated from IDLE itself. Also, the + environment is not restarted when Run/Run Module (F5) is selected. If + your code has been modified, you must reload() the affected modules and + re-import any specific items (e.g. from foo import baz) if the changes + are to take effect. For these reasons, it is preferable to run IDLE + with the default subprocess if at all possible. |