2009-03-14 26 views
12

Jak wykryć w moim skrypcie pythona, czy jest on uruchamiany przez interpreter debugowania (np. Python_d.exe zamiast python.exe)? Muszę zmienić ścieżki do niektórych bibliotek dll, które przekazuję do rozszerzenia.Python: Jak wykryć interpreter debugowania

np Id jak zrobić coś takiego na początku mój skrypt Pythona:

#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" 

myślałem o dodaniu „IsDebug()” metoda do rozszerzenia, które zwraca wartość true, jeśli jest to debug build (tj. został zbudowany z "#define DEBUG") i false w przeciwnym razie. Ale to wydaje się nieco hack dla somthing Im na pewno mogę pyton mi powiedzieć ...

+1

Czy bierzesz za pomocą surowych sznurki, aby uniknąć nadmiernej ucieczki? r'bin \ debug \ direct3d9.dll " – cdleary

Odpowiedz

2

Łatwym sposobem, jeśli nie przeszkadza powołując się na nazwę pliku:

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

You można przeczytać więcej o module sys i jego różnych obiektach here.

3

lepiej, bo to też działa, gdy używasz wbudowany interpreter Pythona jest sprawdzenie wartości zwracanej

imp.get_suffixes() 

Dla debugowania zbudować zawiera krotki zaczynające się od „_d.pyd”:

# 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)] 
Powiązane problemy