반응형
모듈을 파이썬으로 "다시 가져 오기"하는 방법, 가져 오기 후 코드 변경
나는 foo.py
def foo():
print "test"
IPython에서는 다음을 사용합니다.
In [6]: import foo
In [7]: foo.foo()
test
그런 다음 다음으로 변경 foo()
했습니다.
def foo():
print "test changed"
IPython에서 호출 결과는 여전히 test
다음과 같습니다.
In [10]: import foo
In [11]: foo.foo()
test
그런 다음 다음을 사용합니다.
In [15]: del foo
In [16]: import foo
In [17]: foo.foo()
test
foo.pyc
동일한 폴더에 삭제 foo.py
했지만 여전히 운이 없습니다.
런타임에서 업데이트 된 코드를 다시 가져 오는 방법을 알 수 있습니까?
Python 2.x의 경우
reload(foo)
Python 3.x의 경우
import importlib
import foo #import the module here, so that it can be reloaded.
importlib.reload(foo)
gnibbler의 답변 외에도 :
이것은 Python 3에서 다음과 같이 변경되었습니다.
>>> import imp
>>> imp.reload(foo)
@onnodb가 지적했듯이 Python 3.4 이후로 imp
더 이상 사용되지 않습니다 importlib
.
>>> import importlib
>>> importlib.reload(foo)
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
이것이 자동으로 발생하도록하려면 iPython 과 함께 제공 되는 autoreload 모듈이 있습니다.
반응형
'Program Tip' 카테고리의 다른 글
Python을 작성하는 C # 프로그래머를위한 조언 (0) | 2020.10.25 |
---|---|
트랜잭션 로그 비활성화 (0) | 2020.10.25 |
쉼표 또는 세미콜론이있는 CSV? (0) | 2020.10.25 |
프로토 타입에서 setter / getter를 정의하는 방법 (0) | 2020.10.25 |
ipython 노트북에서 플롯 너비 설정 (0) | 2020.10.25 |