diff options
| author | Adrian Holovaty <adrian@holovaty.com> | 2006-01-12 20:56:10 +0000 |
|---|---|---|
| committer | Adrian Holovaty <adrian@holovaty.com> | 2006-01-12 20:56:10 +0000 |
| commit | 5e6d6fafae96fa55d754e88cc4cf814b75c32c13 (patch) | |
| tree | 98aa553bf35f42afe8bfe4a71416b95165799c6a | |
| parent | 51f4e95cb70b94a28969d30cb6036a4a25a75503 (diff) | |
Fixed #1202 -- Changed 'manage.py shell' to use IPython if present. Also added '--plain' option, which overrides IPython to use the standard Python interactive prompt
git-svn-id: http://code.djangoproject.com/svn/django/trunk@1930 bcc190cf-cafb-0310-a4f2-bffc1f526a37
| -rw-r--r-- | django/core/management.py | 24 | ||||
| -rw-r--r-- | docs/django-admin.txt | 13 |
2 files changed, 31 insertions, 6 deletions
diff --git a/django/core/management.py b/django/core/management.py index 830d585d1a..2082ba1a61 100644 --- a/django/core/management.py +++ b/django/core/management.py @@ -814,11 +814,19 @@ def createcachetable(tablename): db.db.commit() createcachetable.args = "[tablename]" -def run_shell(): - "Runs a Python interactive interpreter" - import code - code.interact() -run_shell.args = '' +def run_shell(use_plain=False): + "Runs a Python interactive interpreter. Tries to use IPython, if it's available." + try: + if use_plain: + # Don't bother loading IPython, because the user wants plain Python. + raise ImportError + import IPython + shell = IPython.Shell.IPShell() + shell.mainloop() + except ImportError: + import code + code.interact() +run_shell.args = '[--plain]' # Utilities for command-line script @@ -878,6 +886,8 @@ def execute_from_command_line(action_mapping=DEFAULT_ACTION_MAPPING): help='Python path to settings module, e.g. "myproject.settings.main". If this isn\'t provided, the DJANGO_SETTINGS_MODULE environment variable will be used.') parser.add_option('--pythonpath', help='Lets you manually add a directory the Python path, e.g. "/home/djangoprojects/myproject".') + parser.add_option('--plain', action='store_true', dest='plain', + help='Tells Django to use plain Python, not IPython, for "shell" command.') options, args = parser.parse_args() # Take care of options. @@ -913,7 +923,9 @@ def execute_from_command_line(action_mapping=DEFAULT_ACTION_MAPPING): sys.exit(1) else: action_mapping[action](username, email, password) - elif action in ('init', 'shell', 'validate'): + elif action == 'shell': + action_mapping[action](options.plain is True) + elif action in ('init', 'validate'): action_mapping[action]() elif action == 'inspectdb': try: diff --git a/docs/django-admin.txt b/docs/django-admin.txt index 67c162a4f9..750bb58970 100644 --- a/docs/django-admin.txt +++ b/docs/django-admin.txt @@ -156,6 +156,19 @@ Port 7000 on IP address 1.2.3.4:: django-admin.py runserver 1.2.3.4:7000 +shell +----- + +Starts the Python interactive interpreter. + +**New in Django development version:** Uses IPython_, if it's installed. If you +have IPython installed and want to force use of the "plain" Python interpreter, +use the ``--plain`` option, like so:: + + django-admin.py shell --plain + +.. _IPython: http://ipython.scipy.org/ + sql [modelmodule modelmodule ...] --------------------------------- |
