programing

NameError를 제공하는 모듈을 다시 로드하는 중: 이름 'reload'가 정의되지 않았습니다.

powerit 2023. 5. 23. 22:31
반응형

NameError를 제공하는 모듈을 다시 로드하는 중: 이름 'reload'가 정의되지 않았습니다.

이미 Python 3에서 가져온 모듈을 다시 로드하려고 합니다.한 번만 가져와서 실행하면 된다는 것을(를)import다시 명령해도 아무 소용이 없습니다.

실행 중reload(foo)다음 오류가 발생합니다.

Traceback (most recent call last):
    File "(stdin)", line 1, in (module)
    ...
NameError: name 'reload' is not defined

오류의 의미는 무엇입니까?

reload 는 Python 2에는 내장되어 있지만 Python 3에는 내장되어 있지 않기 때문에 현재 보이는 오류가 예상됩니다.

Python 3에서 모듈을 다시 로드해야 하는 경우 다음 중 하나를 사용해야 합니다.

>= Python3의 경우.4:

import importlib
importlib.reload(module)

<= Python3의 경우.3:

import imp
imp.reload(module)

Python2의 경우.x:

내장된 기능reload()기능.

reload(module)
import imp
imp.reload(script4)

이전에 작성한 답변을 확장하려면 Python 버전 2와 3에서 작동하는 단일 솔루션을 원할 경우 다음을 사용할 수 있습니다.

try:
    reload  # Python 2.7
except NameError:
    try:
        from importlib import reload  # Python 3.4+
    except ImportError:
        from imp import reload  # Python 3.0 - 3.3

다음 스니펫은 모든 파이썬 버전에서 작동하기 때문에 사용하는 것이 좋습니다.six):

from six.moves import reload_module
reload_module(module)

python2 및 python3 호환성을 위해 다음을 사용할 수 있습니다.

# Python 2 and 3
from imp import reload
reload(mymodule)

외부 lib를 사용하지 않으려면 아래와 같이 python 2에서 python 3에 대한 reload 방법을 다시 만드는 것이 한 가지 해결책입니다.모듈의 맨 위에 이를 사용합니다(파이썬 3.4+로 가정).

import sys
if(sys.version_info.major>=3):
    def reload(MODULE):        
        import importlib
        importlib.reload(MODULE)

Python 파일을 구성 파일로 사용하고 애플리케이션을 다시 시작하지 않으려면 BTW 다시 로드가 매우 필요합니다.

언급URL : https://stackoverflow.com/questions/961162/reloading-module-giving-nameerror-name-reload-is-not-defined

반응형