2015-03-27 2 views
2

У меня есть файл с именем test_file, который предназначен для тестирования другого файла под названием file. 'test_file' также содержит файл .txt в том же каталоге. Когда я обновляю file, сохраните, выберите «Change to Editor Directory ...», затем запустите test_file, Enthought, похоже, не узнает, что file был обновлен. Первоначально я думал, что мне нужно выбирать параметр «Изменить в каталог редакторов» каждый раз, когда я обновляю file, и поэтому я сделал это, но test_file все еще печатал «успех», даже после того, как я специально отредактировал file, так что test_file должен напечатать false. (Да, я уверен, что он должен был напечатать false, поскольку я добавил кучу кода таблеток в file и даже код, который не должен запускаться, например, бросать в return заявления с явно ошибочным отступом). Итак, по сути, Enthought Canopy не понимает, что я обновил file.Python - Изменения в импортированном файле не вступили в силу

Однако, если я сохраню и бросить все, возобновлять Enthought, выберите «Изменить в редактор каталога», а затем запустить test_file, он печатает правильный результат.

Это очень неприятно, потому что я потратил дни, отлаживая правильно код, прежде чем я понял это. У меня есть очень, потому что я не знаю, действительно ли то, что я тестировал в прошлом, действительно правильно, и я не хочу, чтобы это произошло в будущем.

Какова возможная причина этого? (Примечание: я не знаю, является ли это проблемой Enthought или проблемой Python)

ответ

2

Трудно сказать, не видя код, но я подозреваю, что file импортируется с помощью команды, эквивалентной import file. Python кэширует импортированные модули, и поэтому он не будет получать изменения в file. Это функция Python и не зависит от Enthought Canopy.

Если это так, то вы можете решить эту проблему путем добавления вызова к reload (http://bit.ly/1E97V4n) после импорта в test_file, явно принудительной перезагрузки модуля:

import file 
    reload(file) 
+1

Согласованное. Подробнее см. В [этой статье базы знаний] (https://support.enthought.com/hc/en-us/articles/204469240-IPython-After-editing-a-module-changes-are-not-effective-without -ядерный перезапуск) –

 Смежные вопросы

  • Нет связанных вопросов^_^