def handle(self, *args, **options):
use_plain = options.get('plain', False)
show_imports = options.get('show_imports', True)
imported_objects = self.import_objects(show_imports)
try:
if use_plain:
# Don't bother loading IPython, because the user wants plain Python.
raise ImportError
from IPython import start_ipython
except ImportError:
# Plain
import code
# Set up a dictionary to serve as the environment for the shell, so
# that tab completion works on objects that are imported at runtime.
# See ticket 5082.
try: # Try activating rlcompleter, because it's handy.
import readline
except ImportError:
pass
else:
# We don't have to wrap the following import in a 'try', because
# we already know 'readline' was imported successfully.
import rlcompleter
readline.set_completer(rlcompleter.Completer(imported_objects).complete)
readline.parse_and_bind("tab:complete")
code.interact(banner='', local=imported_objects)
else:
# IPython
start_ipython(argv=['--no-banner', '--no-confirm-exit'], user_ns=imported_objects)
评论列表
文章目录