Похоже, вы пытаетесь оценить неполное утверждение в строках:
engine.eval("for i in range(10):");
engine.eval(" hello_str += str(i)");
Здесь, я предполагаю, eval()
пытается оценить их один за другим, и ничего не находит после того, как for
дает ошибку, поскольку это неполное утверждение. Попробуйте это:
engine.eval("for i in range(10):\n hello_str += str(i)");
В этом случае символ новой строки не требуется, но это может быть необходимо, если вы хотите включить несколько операторов в тело цикла, например:
engine.eval("for i in range(10):\n hello_str += str(i)\n print i");
Также обратите внимание, что в приведенном выше примере интервал после каждой новой строки должен быть равен. На самом деле, я бы предложил полностью собрать строку сценария перед его оценкой. Или еще лучше, прочитайте его из отдельного файла .py.