Отношения интерпретатора Python со скриптами

В моем текущем каталоге у меня есть foo1.py сценарий и каталог с именем другой с foo2.py сценарий внутри.

Сейчас:

Я запускаю переводчик, и с помощью execfile Я могу запустить оба сценария. Дело в том, что когда я редактирую и сохраняю foo1.pyМне не нужно перезапускать переводчик, я просто execfile снова и он работает с моими модификациями, но то же самое не происходит с foo2.py, За правки, которые я сделал для foo2.py для вступления в силу я должен выйти и перезапустить переводчик, так как даже после его сохранения execfile('foo2.py') будет запускать тот же скрипт, что и раньше...

Это раздражает, так как я хотел постоянно редактировать и запускать несколько сценариев в последовательности, которые часто зависят друг от друга...

Как я могу сделать так, чтобы переводчик увидел мои правки foo2.pyбез перезапуска?

Спасибо!

2 ответа

Если вы используете "недавний" Python, вы можете попробовать следующий синтаксис, совместимый с Python 2.6, 2.7 и 3.x

with open('foo2.py') as file:
    exec(compile(file.read(), 'foo2.py', 'exec'))

Посмотрите документацию для функции reload() и упомянутые там ограничения; в зависимости от вашей версии Python он находится в разных модулях, для 2.x это предопределено.

Другие вопросы по тегам