Opened 14 years ago

Closed 13 years ago

Last modified 13 years ago

#12735 closed (fixed)

django shell is broken with IPython 0.11.x (bzr.r1219)

Reported by: alperkanat Owned by: nobody
Component: Core (Management commands) Version: dev
Severity: Keywords:
Cc: Triage Stage: Accepted
Has patch: yes Needs documentation: no
Needs tests: no Patch needs improvement: yes
Easy pickings: no UI/UX: no

Description (last modified by Ramiro Morales)

[15:33] (tunix@penguix raptiye)$ ./manage.py shell
Traceback (most recent call last):
  File "./manage.py", line 14, in <module>
    execute_manager(settings)
  File "/Users/tunix/Projects/django/core/management/__init__.py", line 438, in execute_manager
    utility.execute()
  File "/Users/tunix/Projects/django/core/management/__init__.py", line 379, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/Users/tunix/Projects/django/core/management/base.py", line 195, in run_from_argv
    self.execute(*args, **options.__dict__)
  File "/Users/tunix/Projects/django/core/management/base.py", line 222, in execute
    output = self.handle(*args, **options)
  File "/Users/tunix/Projects/django/core/management/base.py", line 351, in handle
    return self.handle_noargs(**options)
  File "/Users/tunix/Projects/django/core/management/commands/shell.py", line 29, in handle_noargs
    shell = IPython.Shell.IPShell(argv=[])
AttributeError: 'module' object has no attribute 'Shell'

It seems that Shell module is deprecated:

In [1]: from IPython import Shell
/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/IPython/Shell.py:31: DeprecationWarning: 
This module (IPython.Shell) is deprecated.  The classes that were in this
module have been replaced by:

IPShell->IPython.core.iplib.InteractiveShell
IPShellEmbed->IPython.core.embed.InteractiveShellEmbed

Please migrate your code to use these classes instead.

  warn(msg, category=DeprecationWarning, stacklevel=1)

Attachments (1)

django_shell.patch (965 bytes ) - added by alperkanat 14 years ago.

Download all attachments as: .zip

Change History (8)

comment:1 by Ramiro Morales, 14 years ago

Component: Core frameworkdjango-admin.py
Description: modified (diff)

(reformatted description)

no 0.11 version of ipython has been released yet, should we wait for a stable release before thinking about adding compatibility code to Django?

by alperkanat, 14 years ago

Attachment: django_shell.patch added

comment:2 by Alex Gaynor, 14 years ago

Triage Stage: UnreviewedAccepted

comment:3 by Ramiro Morales, 14 years ago

#13554 reported the same issue against the now stable 0.11 IPython release and contains a similar patch.

in reply to:  3 comment:4 by Ramiro Morales, 14 years ago

Replying to ramiro:

... against the now stable 0.11 IPython release.

Wrong. IPython 0.1 hasn't been released yet.

comment:5 by Matthias Kestenholz, 13 years ago

Has patch: set
Patch needs improvement: set

Most of the time we try the "new way" to do things first and fall back to the old way if it didn't work out.

Plus, a comment explaining why we need this try...except clause is in order too.

try:
    shell = IPython.InteractiveShell()
except AttributeError:
    # IPython < 0.11
    # Explicitly pass an empty list as arguments, because otherwise IPython
    # would use sys.argv from this script.
    shell = IPython.Shell.IPShell(argv=[])
shell.mainloop()

comment:6 by Jannis Leidel, 13 years ago

Resolution: fixed
Status: newclosed

(In [14895]) Fixed #12735, #14892 and #11542 -- Fixed support for the latest IPython (development) version in the shell management command and added a hook to implement additional shell runners (by subclassing django.core.management.commands.shell.Command, extending the shells attribute and implement a method with the same name).

comment:7 by Jannis Leidel, 13 years ago

(In [14910]) [1.2.X] Fixed #12735 and #14892 -- Fixed support for the latest IPython (development) version in the shell management command.

Backport from trunk (r14895).

Note: See TracTickets for help on using tickets.
Back to Top