2014-01-29 1 views
4

У меня есть программа python, которая сначала выполняет некоторые задачи, а затем в определенных условиях переходит в интерактивный режим, где пользователь имеет доступ к интерактивной консоли python с областью текущей программы. Прямо сейчас я делаю это с помощью модуля кода, вызывая код.InteractiveConsole (globals()). Взаимодействует ('') (см. http://docs.python.org/2/library/code.html).Как запустить интерактивный сеанс python/ipython из середины моей программы python?

Моя проблема заключается в том, что в результате интерактивной консоли не хватает некоторых функций, которые я обычно получаю со стандартной консолью python (т. Е. Той, которую вы получаете, набирая «python» в терминале), например, вспоминая предыдущую команду и т. Д. есть способ получить ту же самую интерактивную консоль в середине моей программы python или еще лучше, но интерактивную консоль ipython?

+0

Какую операционную систему вы? – jayelm

+0

Это Linux – user3208430

+0

Я не знаю, будет ли работать следующее: если это работает, я не понимаю, почему, но попробуйте импортировать 'readline' перед запуском' code.InteractiveConsole (globals()). Взаимодействовать ('') '. Это, похоже, решило аналогичную проблему, которую я когда-то делал. – user2357112

ответ

7

Просто используйте IPython.embed(), где вы в настоящее время используете code.InteractiveConsole(globals()).interact('').

Убедитесь, что вы импортирования IPython прежде чем сделать это, хотя:

import IPython 
# lots of code 
# even more code 
IPython.embed() 
+1

Я не очень хорошо знаком с ipython, поэтому, задавая свой вопрос, я как бы надеялся, что у ipython будет что-то вроде этого. Я отдам это, спасибо! – user3208430

+0

@ user3208430 рад, что это сработало! Рад был помочь. –

Смежные вопросы