Встроенная интерактивная оболочка в IPython - PullRequest
6 голосов
/ 29 марта 2011

До перехода на IPython v0.11 (с использованием Python 2.6.1) можно было встроить интерактивную оболочку IPython, используя, например, this , например,

from IPython.Shell import IPShellEmbed
ipshell = IPShellEmbed()
ipshell() # this call anywhere in your program will start IPython

"Встроенная оболочка была преобразована в действительно автономный подкласс InteractiveShell с именем InteractiveShellEmbed . Вся логика встраивания была извлечена из базового класса и помещена во встроенный подкласс" (см. здесь и здесь ).

Насколько я понимаю, теперь вы можете просто запустить консоль с помощью

import IPython
IPython.embed()

Однако, это поднимает

TraitError: Черта 'exit_msg' экземпляра InteractiveShellEmbed должна быть строкой, но было указано значение u ''.

Если мы передадим строку для exit_msg на

IPython.embed(exit_msg='Whatever')

Тогда возникает другая ошибка

AttributeError: у объекта «InteractiveShellEmbed» нет атрибута «set_completer»

Кто-нибудь еще сталкивался с этой проблемой? В противном случае это может быть ошибкой, поскольку в конце концов это версия разработчика.

Ответы [ 2 ]

9 голосов
/ 28 апреля 2015

В эти дни (3.0+) все, что вам нужно сделать, это:

from IPython import embed; embed()

Если вы имеете в виду встраивание еще одной оболочки IPython в IPython (рекурсивно), долгое время это не поддерживалось, ноэта проблема была исправлена ​​в прошлом году.

3 голосов
/ 10 марта 2013

На вики-сайте github есть специальные инструкции :

from IPython.frontend.terminal.ipapp import TerminalIPythonApp
app = TerminalIPythonApp.instance()
app.initialize(argv=[]) # argv=[] instructs IPython to ignore sys.argv
app.start()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...