如果我安装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.
答案 0 :(得分:10)
您想要使用
python manage.py shell
不
ipython manage.py shell
manage.py
shell启动嵌入式IPython实例。当您通过ipython manage.py
运行此操作时,您将启动常规IPython会话,在该会话中运行尝试嵌入IPython的脚本。这意味着你要启动两个IPython实例。这失败了,因为IPython本身无法嵌入。