파이썬 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에서 모듈을 다시로드 해야하는 경우 다음 중 하나를 사용해야합니다.
importlib.reload
Python 3.4 이상imp.reload
Python 3.0 ~ 3.3 (Python 3.4부터 사용되지 않음)importlib
)
답변
> = 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 다시로드가 매우 필요합니다.