Функция перезагрузки работает только один раз (Python)

#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. … Что такое «ядро»? Ваш вопрос не имеет никакого смысла. Пожалуйста, точно опишите, что вы делаете, как вы запускаете / выполняете этот код.