2017-03-13 8 views
4

기본 REPL, ptpython, ipython, bpython 등과 같이 많은 종류의 Python REPL이 있습니다. 현재 REPL이 무엇인지 검사 할 수있는 방법이 있습니까?REPL의 유형을 검사하는 방법은 무엇입니까?

약간의 배경 :
당신이 들어있을 수 있습니다, 나는 꽤 dir() 인쇄를 생성하는 pdir2했다 . 내가 직면하고있는 도전 과제는 타사 REPL과 호환되도록하는 것이지만 먼저 프로그램이 실행중인 REPL을 알아야합니다.

+1

https://stackoverflow.com/questions/5376837/how-can-i-do-an-if-run-from-ipython-test-in-python – languitar

+0

확인 그래서 ipython 해결했다. 'bpython'과'bpython'은 그런 수표를 제공하지 않습니다. – laike9m

+0

어쩌면 경험적으로 :'sys.executable' – languitar

답변

1

좋아, 마침내 간단하지만 매우 신뢰할 수있는 방법을 찾았습니다 : sys.modules을 확인하십시오.

복사하여 사용할 수있는 기능입니다.

import sys 

def get_repl_type(): 
    if any('ptpython' in key for key in sys.modules): 
     return 'PTPYTHON' 
    if any('bpython' in key for key in sys.modules): 
     return 'BPYTHON' 
    try: 
     __IPYTHON__ 
     return 'IPYTHON' 
    except NameError: 
     return 'PYTHON' 
0

아마도 가장 좋은 방법은 sys.stdinstdout을보고 그들의 유형을 비교하십시오.

각 통역사가 사용자 정의 완료 또는 형식기에 연결하는 방법이있을 수 있습니다.

0

호출 스택에서 정보를 찾을 수 있습니다.

멋진 REPL은 시작 스크립트를 사용하여 초기화합니다.

하나의 REPL을 다른 것으로 실행할 수 있으므로 REPL init 스크립트에서 프레임을 찾을 때까지 호출 스택을 위에서 아래로 트래버스해야합니다.