IPython autoreload 확장 프로그램을 사용하는 것이 좋습니다 .
./manage.py shell
In [1]: %load_ext autoreload
In [2]: %autoreload 2
그리고 지금부터 가져온 모든 모듈은 평가 전에 새로 고쳐집니다.
In [3]: from x import print_something
In [4]: print_something()
Out[4]: 'Something'
In [5]: print_something()
Out[5]: 'Something else'
%load_ext autoreload
명령 전에 무언가를 가져온 경우에도 작동합니다 .
./manage.py shell
In [1]: from x import print_something
In [2]: print_something()
Out[2]: 'Something'
In [3]: %load_ext autoreload
In [4]: %autoreload 2
In [5]: print_something()
Out[5]: 'Something else'
%aimport
명령 및 3 가지 자동 다시로드 전략을 사용 하여 일부 가져 오기가 새로 고쳐지는 것을 방지 할 수도 있습니다 .
% autoreload
- 이제 모든 모듈 (% aimport에 의해 제외 된 모듈 제외)을 자동으로 다시로드합니다.
% autoreload 0
% autoreload 1
- 입력 된 Python 코드를 실행하기 전에 매번 % aimport로 가져온 모든 모듈을 다시로드합니다.
% autoreload 2
- 입력 된 Python 코드를 실행하기 전에 매번 모든 모듈 (% aimport에 의해 제외 된 모듈 제외)을 다시로드하십시오.
% aimport
- 자동으로 가져 오거나 가져 오지 않을 모듈을 나열합니다.
% aimport foo
- 'foo'모듈을 가져 와서 % autoreload 1에 대해 자동으로 다시로드되도록 표시하십시오.
% aimport -foo
- 자동으로 다시로드되지 않도록 'foo'모듈을 표시합니다.
이것은 일반적으로 내 사용에 적합하지만 몇 가지주의 사항이 있습니다.
- 코드 개체를 교체하는 것이 항상 성공하는 것은 아닙니다. 클래스의 @property를 일반 메서드로 변경하거나 메서드를 멤버 변수로 변경하면 문제가 발생할 수 있습니다 (그러나 이전 개체에서만).
- 다시로드되기 전에 모듈에서 제거 된 (예 : monkey-patching을 통해) 기능은 업그레이드되지 않습니다.
- C 확장 모듈은 다시로드 할 수 없으므로 자동으로 다시로드 할 수 없습니다.