[python] NameError를주는 모듈을 다시로드하는 중 : 이름 ‘reload’가 정의되지 않았습니다.

파이썬 3에서 이미 가져온 모듈을 다시로드하려고합니다. 한 번만 가져 와서 import명령을 다시 실행하면 아무것도하지 않는다는 것을 알고 있습니다.

실행 reload(foo)하면 다음과 같은 오류가 발생합니다.

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

오류는 무엇을 의미합니까?



답변

reload 파이썬 2에는 내장되어 있지만 파이썬 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)


답변

외부 라이브러리를 사용하지 않으려면 한 가지 해결책은 다음과 같이 Python 3의 Python 2에서 reload 메소드를 다시 작성하는 것입니다. 모듈 상단에서 이것을 사용하십시오 (python 3.4+로 가정).

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

python 파일을 구성 파일로 사용하고 응용 프로그램을 다시 시작하지 않으려면 BTW 다시로드가 매우 필요합니다.