Отношения интерпретатора 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 это предопределено.