(py-shell-map): New variable contains the keymap used in *Python*
shell buffers.

(py-shell): Moved the require of comint to the top level.  Also
use-local-map py-shell-map instead of hacking on the comint-mode-map.
This eliminates breakage of other comint-mode buffers (e.g. shell).
diff --git a/Misc/python-mode.el b/Misc/python-mode.el
index c8e78a7..088b0bb 100644
--- a/Misc/python-mode.el
+++ b/Misc/python-mode.el
@@ -105,6 +105,7 @@
 
 ;;; Code:
 
+(require 'comint)
 (require 'custom)
 (eval-when-compile
   (require 'cl)
@@ -632,6 +633,16 @@
 	     (where-is-internal 'self-insert-command))
   )
 
+(defvar py-shell-map nil
+  "Keymap used in *Python* shell buffers.")
+(if py-shell-map
+    nil
+  (setq py-shell-map (copy-keymap comint-mode-map))
+  (define-key py-shell-map [tab]   'tab-to-tab-stop)
+  (define-key py-shell-map "\C-c-" 'py-up-exception)
+  (define-key py-shell-map "\C-c=" 'py-down-exception)
+  )
+
 (defvar py-mode-syntax-table nil
   "Syntax table used in `python-mode' buffers.")
 (if py-mode-syntax-table
@@ -1193,17 +1204,13 @@
   ;; BAW - should undo be disabled in the python process buffer, if
   ;; this bug still exists?
   (interactive)
-  (require 'comint)
   (switch-to-buffer-other-window
    (apply 'make-comint py-which-bufname py-which-shell nil py-which-args))
   (make-local-variable 'comint-prompt-regexp)
   (setq comint-prompt-regexp "^>>> \\|^[.][.][.] \\|^(pdb) ")
   (add-hook 'comint-output-filter-functions 'py-comint-output-filter-function)
   (set-syntax-table py-mode-syntax-table)
-  ;; set up keybindings for this subshell
-  (local-set-key [tab]   'self-insert-command)
-  (local-set-key "\C-c-" 'py-up-exception)
-  (local-set-key "\C-c=" 'py-down-exception)
+  (use-local-map py-shell-map)
   )
 
 (defun py-clear-queue ()