正在创建InteractiveShellEmbed的多个不兼容的子类实例

时间:2013-11-27 13:25:54

标签: python django ipython anaconda

如果我安装Anaconda Python Distribution并尝试从我的django应用程序中运行ipython manage.py shell,则会抛出以下错误。我知道当我安装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.

1 个答案:

答案 0 :(得分:10)

您想要使用

python manage.py shell

ipython manage.py shell

manage.py shell启动嵌入式IPython实例。当您通过ipython manage.py运行此操作时,您将启动常规IPython会话,在该会话中运行尝试嵌入IPython的脚本。这意味着你要启动两个IPython实例。这失败了,因为IPython本身无法嵌入。