В приложении Python я хочу открыть Python REPL через класс InteractiveConsole
. Но за до я прыгаю в интерактивную подсказку Python (с помощью метода interact
). Я хочу выполнить некоторые команды в виде строк. Вот минимальный пример:
pre_commands = """for i in range(3):
print(i*i)
for i in range(3):
print(i*17)
"""
console = code.InteractiveConsole()
for l in pre_commands.splitlines():
console.push(l)
console.interact(banner="", exitmsg="")
Это всегда приводит к ошибке с SyntaxError: invalid syntax
в 3-й строке pre_commands
. Похоже, что pu sh понимает только одну команду завершения (как
for i in range(3):
print(i*i)
, а не другую команду, несмотря на то, что InteractiveConsole.push
имеет механизм ожидания, пока команда не будет выполнена. завершено.
Как я могу заставить эту работу работать с произвольными строками сложных и простых команд в строке pre_commands
?