代码之家  ›  专栏  ›  技术社区  ›  prosseek

IPython找不到Shell.IPShell类

  •  8
  • prosseek  · 技术社区  · 14 年前

    在安装Django之后,我遵循了 the tutorial 玩API。当我运行以下命令时。

    python manage.py shell
    

    我收到这个错误信息。

      File "/Library/Python/2.6/site-packages/django/core/management/commands/shell.py", 
      line 29, in handle_noargs
        shell = IPython.Shell.IPShell(argv=[])
      AttributeError: 'module' object has no attribute 'Shell'
    

    我检查了是否有Shell.py模块,以及其中的IPShell类。

    /Library/Python/2.6/site-packages/IPython/Shell.py

    class IPShell:
        """Create an IPython instance."""
    

    这是怎么回事?我的IPython/Python/OS如下。

    • Mac OS X 10.6.5版
    • 蟒蛇2.6.1
    • IPython 0.10.1版

    补充

    >>> import IPython
    >>> IPython.Shell
    Traceback (most recent call last):
      File "", line 1, in 
    AttributeError: 'module' object has no attribute 'Shell'
    >>> print IPython.__file__
    /Library/Python/2.6/site-packages/IPython/__init__.py
    

    解决了的

    在ma3和Ignacio的帮助下,我可以解决这个问题。

    1. 移除站点包/IPython和站点包/IPython*.egg
    2. sudo easy_install ipython重新安装ipython
    3. 将补丁作为Ignacio链接应用到django的shell.py。

          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()
      
    3 回复  |  直到 14 年前
        1
  •  7
  •   Ignacio Vazquez-Abrams    14 年前

    一个 change 早在2009年8月19日就被制作成了IPython,去掉了这个名字,而Django还没有赶上。所以,詹戈·巴格。

    编辑:

    以及 here it is .

        2
  •  3
  •   miki725    13 年前

    以下是GitHub上django extensions repo的正式提交:

    Django-Extensions GitHub repo

    您可以通过执行以下操作来安装:

    $ git clone git://github.com/django-extensions/django-extensions.git
    $ cd django-extensions
    $ python setup.py install 
    
        3
  •  1
  •   Peter    13 年前

    对于IPython 0.11.dev修复了:

    from IPython.frontend.terminal.ipapp import IPythonApp
    app = IPythonApp(argv=[])
    app.start()