Python 코드에서 REPL(Read, Eval, Print, Loop)로 드롭하는 방법
Python 스크립트가 명령줄에서 실행된 경우에도 실행 시 임의의 지점에서 REPL에 강제로 삽입되도록 프로그래밍할 수 있는 방법이 있습니까?
저는 빠르고 더러운 플롯 프로그램을 작성하고 있습니다. 이 프로그램은 stdin 또는 파일에서 데이터를 읽고 플롯한 다음 REPL로 이동하여 플롯을 사용자 지정할 수 있도록 합니다.
자주 사용하는 항목:
def interact():
import code
code.InteractiveConsole(locals=globals()).interact()
python에 대한 대화형 옵션을 사용해 볼 수 있습니다.
python -i program.py
그러면 program.py 의 코드가 실행된 다음 REPL로 이동합니다.최상위 프로그램 수준에서 정의하거나 가져오는 모든 항목.파이를 사용할 수 있습니다.
다음은 이 작업을 수행하는 방법입니다(IPython > v0.11).
import IPython
IPython.embed()
IPython <= v0.11의 경우:
from IPython.Shell import IPShellEmbed
ipshell = IPShellEmbed()
ipshell() # this call anywhere in your program will start IPython
당신은 파이썬 REPL의 캐딜락인 아이피톤을 사용해야 합니다.http://ipython.org/ipython-doc/stable/interactive/reference.html#embedding-ipython 을 참조하십시오.
설명서에서 다음을 참조하십시오.
또한 자동적이고 계산 집약적인 부분을 수행한 다음 데이터, 플롯 등을 살펴보기 위해 중지해야 하는 경우가 일반적인 과학적 컴퓨팅 상황에서도 유용할 수 있습니다.IPython 인스턴스를 열면 데이터와 기능에 대한 모든 액세스 권한이 제공되며, 대화형 파트를 마치면 프로그램 실행을 다시 시작할 수 있습니다(필요한 횟수만큼 나중에 다시 중지할 수도 있음).
디버거를 시작할 수 있습니다.
import pdb;pdb.set_trace()
REPL을 무엇에 사용할지는 모르겠지만 디버거는 매우 유사합니다.
iPython과 디버거의 기능을 사용하려면 ipdb를 사용해야 합니다.
다음을 추가하여 pdb와 동일한 방법으로 사용할 수 있습니다.
import ipdb
ipdb.set_trace()
방금 제가 작성한 스크립트 중 하나에서 이 작업을 수행했습니다(이 스크립트는 계측기에 매우 큰 PITA인 자동화 프레임워크 내부에서 실행됨).).
x = 0 # exit loop counter
while x == 0:
user_input = raw_input("Please enter a command, or press q to quit: ")
if user_input[0] == "q":
x = 1
else:
try:
print eval(user_input)
except:
print "I can't do that, Dave."
continue
브레이크포인트를 원하는 곳에 배치하면 파이썬 인터프리터와 동일한 구문을 사용하여 상태를 확인할 수 있습니다(모듈 가져오기를 할 수 있는 것 같지는 않지만).매우 우아하지는 않지만, 다른 설정이 필요하지는 않습니다.
위의 답변은 훌륭하지만 IDE에서 이 기능을 사용하려면 다음과 같이 하십시오.Python Setup에서 Visual Studio Code(v1.5.*) 사용:
- 실행할 라인을 강조 표시하고
right click
를 선택합니다.Run Selection/Line in Interactive Window
드롭 다운에서- 를 누릅니다.
shift + enter
키보드에 있습니다.
- 마우스 오른쪽 버튼을 클릭
Python
하고자 하는 을 선택합니다.Run Current File in Interactive Window
그러면 대화형 세션이 시작되고 다음과 같이 보풀 처리, 코드 완료 및 구문 강조가 표시됩니다.
평할코를입고다음누릅을다니하력드가를 누릅니다.shift + enter
키보드에서 실행할 수 있습니다.
파이썬을 즐기세요!
언급URL : https://stackoverflow.com/questions/1395913/how-to-drop-into-repl-read-eval-print-loop-from-python-code
'source' 카테고리의 다른 글
SSH 터널링을 통해 Python이 MySQL에 연결할 수 있도록 설정 (0) | 2023.08.28 |
---|---|
Android에서 스레드 또는 프로세스를 일시 중지/슬립하는 방법은 무엇입니까? (0) | 2023.08.28 |
C#에서 문자열을 UTF-8로 변환하려면 어떻게 해야 합니까? (0) | 2023.08.23 |
배열로 컬렉션 채우기 (0) | 2023.08.23 |
Internet Explorer 7(인터넷 익스플로러 7)에서 절대 위치 부모의 백분율 너비 하위 요소에서 너비가 축소된 이유는 무엇입니까? (0) | 2023.08.23 |