#python #import #reload #importerror #spyder
#python #импорт #перезагрузка #importerror #spyder
Вопрос:
Я работаю с некоторым кодом, в котором мне нужно получить доступ к функциям, которые хранятся в каталоге, отличном от остальных модулей python (мой скрипт C:/path/M461/DataMapping
включен, модуль C:/path/M461/ModuleDir
включен и имеет имя functions.py
— original, я знаю). Мой профессор сказал, что importlib.reload
для использования функций необходимо использовать, но у меня техническая ошибка reload
. Вот мой код:
parentDir = r'C:/path/M461/'
if parentDir not in set(sys.path):
sys.path.append(parentDir)
from ModuleDir import functions
dir(functions)
import importlib
importlib.reload(functions)
fieldDict = functions.fieldDictBuild()
Когда я запускаю ее, в первый раз она работает отлично. Любые последующие попытки запустить файл выдают ошибку:
File "C:UsersKristenAnaconda3libimportlib__init__.py", line 147, in reload
raise ImportError(msg.format(name), name=name)
ImportError: module ModuleDir.functions not in sys.modules
Единственное решение, которое я нашел, — это полностью перезапускать ядро каждый раз, когда я запускаю код, что становится раздражающим. Есть ли способ исправить это навсегда? Это проблема с моим кодом или с самим reload
модулем? И зачем вообще нужно перезагружать functions
?
Комментарии:
1. Ваш импорт уже сработал; если вы не изменили исходный код этой функции или не удалили из нее глобальные переменные, не должно быть необходимости перезагружать что-либо.
2. … Что такое «ядро»? Ваш вопрос не имеет никакого смысла. Пожалуйста, точно опишите, что вы делаете, как вы запускаете / выполняете этот код.