Я студент, пишущий сценарий Python для достижения следующего:
Учитывая файл.py (который включает в себя схему рисования из pygame), покажите код во время его выполнения вместе с кадром, который отображает чертежи. Я пишу это как инструмент для профессора, чтобы легче преподавать алгоритмы, будучи способным одновременно демонстрировать код и его результат.
Основная проблема, с которой я сталкиваюсь, заключается в том, чтобы останавливаться на каждой строке кода и ждать ответа пользователя для продолжения. Эта функция очень похожа на "шаг в" от любого отладчика.
Один из методов, который я рассмотрел, - это использование функций exec() и eval() при выполнении кода из предоставленного исходного файла. В этом исследовании я нашел общее мнение о том, что exec и eval очень запутывают и часто небезопасны (хотя я буду контролировать входные данные). С помощью этого метода я буду последовательно переходить через источник, ища ветки или логику принятия решений, которые могут повлиять на то, что должно быть выполнено.
Есть ли лучший способ использовать, чем это?
Почему бы вам не включить сам отладчик python в свою программу и выполнить его в нем - и использовать его крючки для графического отслеживания текущей строки?
Я также видел, как кто-то внедрял интерпретатор ironPython в свою программу - и вы, вероятно, можете отслеживать текущий исполняемый код в нем и передавать его в графический интерфейс.
http://writeonly.wordpress.com/2008/09/08/embedding-a-python-shell-in-a-python-script/
exec
работает с законченными модулями (или, по крайней мере, с полными блоками), вам придется эмулировать ветвление, циклы, области видимости и т. д. - так много, что в итоге вы напишите половину интерпретатора Python.pdb
stdlib.