8

如果我安装Anaconda Python Distribution并尝试ipython manage.py shell从我的 django 应用程序中运行,则会引发以下错误。我知道当我安装 anaconda 时,它与 python 和 ipython 一起打包,其版本与我拥有的其他 python/ipython 版本不同。但是不管 ipython 版本如何,为什么 django shell 会抛出错误呢?我尝试卸载系统 ipython 并抛出相同的错误,这意味着 anaconda ipython 发行版和 django 存在一些问题。卸载 anaconda 解决了这个问题。

堆栈跟踪

manage.py in <module>()
      9 
     10 if __name__ == "__main__":
---> 11     execute_manager(settings)

lib/python2.7/site-packages/django/core/management/__init__.pyc in execute_manager(settings_mod, argv)
    457     setup_environ(settings_mod)
    458     utility = ManagementUtility(argv)
--> 459     utility.execute()

lib/python2.7/site-packages/django/core/management/__init__.pyc in execute(self)
    380             sys.stdout.write(self.main_help_text() + '\n')
    381         else:
--> 382             self.fetch_command(subcommand).run_from_argv(self.argv)
    383 
    384 def setup_environ(settings_mod, original_settings_path=None):

lib/python2.7/site-packages/django/core/management/base.pyc in run_from_argv(self, argv)
    194         options, args = parser.parse_args(argv[2:])
    195         handle_default_options(options)
--> 196         self.execute(*args, **options.__dict__)
    197 
    198     def execute(self, *args, **options):

lib/python2.7/site-packages/django/core/management/base.pyc in execute(self, *args, **options)
    230             if self.requires_model_validation:
    231                 self.validate()
--> 232             output = self.handle(*args, **options)
    233             if output:
    234                 if self.output_transaction:

lib/python2.7/site-packages/django/core/management/base.pyc in handle(self, *args, **options)
    369         if args:
    370             raise CommandError("Command doesn't accept any arguments")
--> 371         return self.handle_noargs(**options)
    372 
    373     def handle_noargs(self, **options):

lib/python2.7/site-packages/django_extensions/management/commands/shell_plus.pyc in handle_noargs(self, **options)
    116                 try:
    117                     from IPython import embed
--> 118                     embed(user_ns=imported_objects)
    119                 except ImportError:
    120                     # IPython < 0.11

lib/python2.7/site-packages/IPython/terminal/embed.pyc in embed(**kwargs)
    298         config.InteractiveShellEmbed = config.TerminalInteractiveShell
    299         kwargs['config'] = config
--> 300     shell = InteractiveShellEmbed.instance(**kwargs)
    301     shell(header=header, stack_depth=2, compile_flags=compile_flags)

lib/python2.7/site-packages/IPython/config/configurable.pyc in instance(cls, *args, **kwargs)
    358             raise MultipleInstanceError(
    359                 'Multiple incompatible subclass instances of '
--> 360                 '%s are being created.' % cls.__name__
    361             )
    362 

MultipleInstanceError: Multiple incompatible subclass instances of InteractiveShellEmbed are being created.
4

1 回答 1

10

你想用

python manage.py shell

不是

ipython manage.py shell

manage.pyshell 启动一个嵌入式 IPython 实例。当您通过 运行它时ipython manage.py,您将启动一个常规的 IPython 会话,在该会话中您运行一个尝试嵌入 IPython 的脚本。这意味着您正在启动两个 IPython 实例。这失败了,因为 IPython 不能嵌入到自身中。

于 2013-11-27T20:40:29.433 回答