#python #visual-studio-code
#python #visual-studio-code
Вопрос:
Когда я меняю импортированный скрипт Python при запуске по ячейкам, импорт не работает, пока я не перезапущу всю программу VSCode. Я попытался убить ядро и перезапустить его, сохранил изменения — ничего не работает, требуется только перезапуск. Но не слишком быстро и целесообразно перезапускать его каждый раз, когда я меняю код. Есть ли какой-либо способ применить изменения в импортированных скриптах? Я на Linux lubuntu 20.04.
Ответ №1:
Это работает для меня:
%load_ext autoreload
%autoreload 2
Выполните эти строки после импорта, и все сохраненные изменения, которые вы вносите во внешний файл, который вы импортируете, должны быть автоматически отражены.
Комментарии:
1. Где я должен выполнить эти строки? В терминале VSCode?
2. Да, я просто вставил их в свой код Python под всеми строками импорта в редакторе. Итак, допустим, у меня есть master.py откройте в редакторе. Я бы «импортировал mymodule как my», затем строки автоматической загрузки, а затем любой вызов в моем скрипте, как обычный, по мере необходимости (my.method() …). Когда строки автоматической загрузки выполняются со строками импорта, любые изменения я сохраняю в mymodule. py будет отражен при повторном выполнении любых вызовов mymodule из master.py . (mymodule. py должен находиться в той же папке, что и master.py , конечно).
Ответ №2:
Когда я меняю импортированный скрипт Python при запуске по ячейкам, импорт не работает, пока я не перезапущу всю программу VSCode.
Если вы пытаетесь изменить и сохранить импортированный файл python, выполнение ячейки за ячейкой так не работает. Вам нужно будет сначала сохранить все изменения, а затем попробовать выполнить ячейку за ячейкой; это потому, что выполнение по ячейкам в VSCode обрабатывается стеком, и для этого стека недоступна эксклюзивная информация, такая как неизмененные данные / статус. Вот почему вам придется сначала внести все изменения, а затем выполнить.
Комментарии:
1. Что значит «сохранить все изменения при первом запуске»? Я попытался сохранить все изменения, а затем перезапустить ядро и импортировать с самого начала. Но это не помогает.
2. Ранее вы, возможно, резко прерывали выполнение, а затем пытались сохранить, а затем выполнить. Это не должно было прерываться.
3. Нет, я этого не делал. Каждая запущенная ячейка завершена правильно
Ответ №3:
Хорошим решением этой проблемы является использование importlib
:
import my_changed_module as mc
import importlib
importlib.reload(mc)
Это будет перезагружать ваш модуль каждый раз, когда вы запускаете свой скрипт.