프로그래밍 언어/Python

Python Interpreter에서 업데이트 된 패키지를 다시 가져 오는 방법

Rateye 2021. 9. 15. 10:41
728x90
반응형
질문 : Python Interpreter에서 업데이트 된 패키지를 다시 가져 오는 방법은 무엇입니까?

나는 종종 Python Interpreter에서 내 모듈을 테스트하고 오류가 표시되면 .py 파일을 빠르게 업데이트합니다. 하지만 통역사에게 어떻게 반영해야합니까? 지금까지 파일을 다시 가져 오는 것이 작동하지 않기 때문에 통역사를 종료했다가 다시 입력했습니다.

답변

Python3 업데이트 : (마지막 편집 / 주석이 더 이상 사용되지 않는 방법을 제안했기 때문에 이미 답변 된 답변에서 인용)

Python 3에서 reload imp 모듈로 이동되었습니다. 3.4에서 imp importlib 대신 사용되지 않으며 reload 는 후자에 추가되었습니다. 3 이상을 대상으로하는 경우 reload 호출 할 때 적절한 모듈을 참조하거나 가져 오십시오.

요약 :

  • Python3> = 3.4 : importlib.reload(packagename)
  • Python3 <3.4 : imp.reload(packagename)
  • Python2 : 아래 계속

reload 내장 기능을 사용하십시오.

https://docs.python.org/2/library/functions.html#reload

reload(module) 실행시 :

  • Python 모듈의 코드가 다시 컴파일되고 모듈 수준 코드가 다시 실행되어 모듈 사전의 이름에 바인딩 된 새 개체 집합을 정의합니다. 확장 모듈의 초기화 기능은 두 번째로 호출되지 않습니다.
  • Python의 다른 모든 객체와 마찬가지로 이전 객체는 참조 횟수가 0으로 떨어진 후에 만 회수됩니다.
  • 모듈 네임 스페이스의 이름은 새롭거나 변경된 개체를 가리 키도록 업데이트됩니다.
  • 이전 개체에 대한 다른 참조 (예 : 모듈 외부의 이름)는 새 개체를 참조하도록 리 바인드되지 않으며 원하는 경우 발생하는 각 네임 스페이스에서 업데이트해야합니다.

예:

# Make a simple function that prints "version 1"
shell1$ echo 'def x(): print "version 1"' > mymodule.py

# Run the module
shell2$ python
>>> import mymodule
>>> mymodule.x()
version 1

# Change mymodule to print "version 2" (without exiting the python REPL)
shell2$ echo 'def x(): print "version 2"' > mymodule.py

# Back in that same python session
>>> reload(mymodule)
<module 'mymodule' from 'mymodule.pyc'>
>>> mymodule.x()
version 2
출처 : https://stackoverflow.com/questions/684171/how-to-re-import-an-updated-package-while-in-python-interpreter
728x90
반응형