Я пытаюсь перезагрузить модуль, который я уже импортировал в Python 3. Я знаю, что вам нужно импортировать только один раз, и import
повторное выполнение команды ничего не даст.
Выполнение reload(foo)
дает эту ошибку:
Traceback (most recent call last):
File "(stdin)", line 1, in (module)
...
NameError: name 'reload' is not defined
Что означает ошибка?
python
python-3.x
Лонни Прайс
источник
источник
reload
в сценарий действительно очень редки, и те, кто использует этот вид темного искусства, вряд ли будут читать этот комментарий. Тем не менее, если вы разрабатываете модуль и используете консоль IPython для интерактивного тестирования, этоreload
может пригодиться в этом рабочем процессе. Как сказал @Evan, следите за побочными эффектами времени импорта. В целом, я бы сказал, чтобы не использоватьreload
чужие модули.reload
во время разработки имеет смысл создать свой собственный.Для> = Python3.4:
Для <= Python3.3:
Для Python2.x:
Используйте встроенную
reload()
функцию.источник
источник
importlib
вместо.Чтобы расширить ранее написанные ответы, если вы хотите одно решение, которое будет работать в Python версий 2 и 3, вы можете использовать следующее:
источник
Я рекомендую использовать следующий фрагмент, так как он работает во всех версиях Python (обязательно
six
):источник
Для совместимости с python2 и python3 вы можете использовать:
источник
Если вы не хотите использовать внешние библиотеки, то одним из решений является воссоздание метода перезагрузки из python 2 для python 3, как показано ниже. Используйте это в верхней части модуля (предполагается, что Python 3.4+).
Кстати, перезагрузка очень необходима, если вы используете файлы Python в качестве файлов конфигурации и хотите избежать перезапуска приложения .....
источник