Подтвердить что ты не робот

Вставить (создать) интерактивную оболочку Python внутри программы Python

Можно ли запустить интерактивную оболочку Python внутри программы Python?

Я хочу использовать такую ​​интерактивную оболочку Python (которая выполняется внутри выполнения моей программы) для проверки некоторых внутренних переменных программы.

4b9b3361

Ответ 1

Модуль code предоставляет интерактивную консоль:

import readline # optional, will allow Up/Down/History in the console
import code
variables = globals().copy()
variables.update(locals())
shell = code.InteractiveConsole(variables)
shell.interact()

Ответ 2

В ipython 0.13+ вам нужно сделать это:

from IPython import embed

embed()

Ответ 3

У меня был этот код в течение длительного времени, надеюсь, вы можете его использовать.

Чтобы проверить/использовать переменные, просто поместите их в текущее пространство имен. В качестве примера я могу получить доступ к var1 и var2 из командной строки.

var1 = 5
var2 = "Mike"
# Credit to effbot.org/librarybook/code.htm for loading variables into current namespace
def keyboard(banner=None):
    import code, sys

    # use exception trick to pick up the current frame
    try:
        raise None
    except:
        frame = sys.exc_info()[2].tb_frame.f_back

    # evaluate commands in current namespace
    namespace = frame.f_globals.copy()
    namespace.update(frame.f_locals)

    code.interact(banner=banner, local=namespace)


if __name__ == '__main__':
  keyboard()

Однако, если вы хотите строго отлаживать свое приложение, я бы предложил высоко использовать IDE или pdb (отладчик python).

Ответ 4

С помощью IPython вам просто нужно позвонить:

from IPython.Shell import IPShellEmbed; IPShellEmbed()()

Ответ 5

Другой трюк (помимо уже предложенных) открывает интерактивную оболочку и импортирует ваш (возможно, модифицированный) python script. При импорте доступны большинство переменных, функций, классов и т.д. (В зависимости от того, как все это подготовлено), и вы даже можете создавать объекты в интерактивном режиме из командной строки. Итак, если у вас есть файл test.py, вы можете открыть Idle или другую оболочку и набрать import test (если он находится в текущем рабочем каталоге).