2009-03-14 4 views
12

파이썬 스크립트에서 디버그 인터프리터 (python.exe가 아닌 python_d.exe)가 실행 중인지 어떻게 알 수 있습니까? 내가 연장에 전달 일부 DLL에 대한 경로를 변경해야합니다. 이 디버그 경우 나는 사실 반환 확장자에 "IsDebug()"방법을 추가하는 방법에 대한 생각Python : 디버그 인터프리터를 감지하는 방법

#get paths to graphics dlls 
if debug_build: 
    d3d9Path = "bin\\debug\\direct3d9.dll" 
    d3d10Path = "bin\\debug\\direct3d10.dll" 
    openGLPath = "bin\\debug\\openGL2.dll" 
else: 
    d3d9Path = "bin\\direct3d9.dll" 
    d3d10Path = "bin\\direct3d10.dll" 
    openGLPath = "bin\\openGL2.dll" 

:

예를 들어 ID가 내 파이썬 스크립트의 시작 부분에서 같은 것을 할 좋아 빌드 (즉, "#define DEBUG"로 빌드 됨)이고 그렇지 않으면 false입니다. 그러나이 보인다 내가 파이썬 말해 얻을 수 임 확실히 뭔가를해야만에 대한 해킹의 비트 ...

+1

당신이 여분의 탈출을 방지하기 위해 원시 문자열을 사용하여 고려 적이 있습니까? rbin \ debug \ direct3d9.dll ' – cdleary

답변

2

쉬운 방법, 당신은 파일 이름에 의존 괜찮다면 :

if sys.executable.endswith("_d.exe"): 
    print "running on debug interpreter" 

당신에게 sys 모듈 및 다양한 기능 here에 대한 자세한 내용을 볼 수 있습니다.

3

더 나은, 당신은 임베디드 파이썬 인터프리터는 '_d.pyd'로 시작하는 튜플을 포함 빌드 디버그를 들어

imp.get_suffixes() 

의 반환 값을 확인하는 것입니다 실행하는 경우 그것은 또한 작동하기 때문에 :

# debug build: 
[('_d.pyd', 'rb', 3), ('.py', 'U', 1), ('.pyw', 'U', 1), ('.pyc', 'rb', 2)] 

# release build: 
[('.pyd', 'rb', 3), ('.py', 'U', 1), ('.pyw', 'U', 1), ('.pyc', 'rb', 2)] 
관련 문제