[PYTHON] 파이썬으로 모듈을 "다시 가져 오는"다음에 코드를 가져온 후에 변경하는 방법
PYTHON파이썬으로 모듈을 "다시 가져 오는"다음에 코드를 가져온 후에 변경하는 방법
나는 foo.py있다.
def foo():
print "test"
IPython에서는 다음을 사용합니다.
In [6]: import foo
In [7]: foo.foo()
test
그런 다음 foo ()를 다음과 같이 변경했습니다.
def foo():
print "test changed"
IPython에서 호출에 대한 결과는 여전히 테스트입니다.
In [10]: import foo
In [11]: foo.foo()
test
그런 다음 사용합니다.
In [15]: del foo
In [16]: import foo
In [17]: foo.foo()
test
나는 foo.py가 존재하는 동일한 폴더에서 foo.pyc를 삭제하지만 여전히 운이 없다.
런타임에 업데이트 된 코드를 다시 가져 오는 방법을 알고 있습니까?
해결법
-
==============================
1.파이썬 2.x 용
파이썬 2.x 용
reload(foo)
파이썬 3.x 용
import importlib import foo #import the module here, so that it can be reloaded. importlib.reload(foo)
-
==============================
2.gnibbler의 답변 외에도 :
gnibbler의 답변 외에도 :
이것은 Python 3에서 다음과 같이 변경되었습니다.
>>> import imp >>> imp.reload(foo)
@onnodb가 지적했듯이, imp는 파이썬 3.4 이후로 importlib에 찬성하여 비난받습니다 :
>>> import importlib >>> importlib.reload(foo)
-
==============================
3.IPython3의 자동로드 기능은 올바르게 작동합니다.
IPython3의 자동로드 기능은 올바르게 작동합니다.
나는 웹 페이지에서 실제 예제를 사용하고있다. 먼저 '자동로드'기능을로드하십시오.
In []: %load_ext autoreload In []: %autoreload 2
그런 다음 테스트 할 모듈을 가져옵니다.
In []: import foo In []: foo.some_function() Out[]: 42
편집기에서 foo.py를 열고 some_function을 변경하여 43을 반환하십시오.
In []: foo.some_function() Out[]: 43
함수를 직접 가져 오는 경우에도 작동합니다.
In []: from foo import some_function In []: some_function() Out[]: 42
43을 반환하는 some_function을 변경하십시오.
In []: some_function() Out[]: 43
-
==============================
4.자동으로 실행되도록하려면 iPython과 함께 제공되는 자동로드 모듈이 있습니다.
자동으로 실행되도록하려면 iPython과 함께 제공되는 자동로드 모듈이 있습니다.
from https://stackoverflow.com/questions/4111640/how-to-reimport-module-to-python-then-code-be-changed-after-import by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] numpy 배열의 n 번째 항목마다 서브 샘플링 (0) | 2018.10.21 |
---|---|
[PYTHON] x보다 큰 첫번째 파이썬리스트 인덱스? (0) | 2018.10.21 |
[PYTHON] 파이썬에서 클래스에 대한 파일 경로를 얻으려면 어떻게해야합니까? (0) | 2018.10.21 |
[PYTHON] 파이썬 : 파일을 표준 출력으로 출력하기 (0) | 2018.10.21 |
[PYTHON] 하나의 if-condition-assignment 행 (0) | 2018.10.21 |