2009-03-14 1 views
12

Come posso rilevare nel mio script python se viene eseguito dall'interprete di debug (cioè python_d.exe piuttosto che python.exe)? Devo cambiare i percorsi di alcune DLL che passo ad un'estensione.Python: Come rilevare l'interprete di debug

esempio Id piace fare qualcosa di simile all'inizio del mio script 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" 

ho pensato di aggiungere un "IsDebug()" metodo per l'estensione che restituisca true se è il debug di build (cioè è stato compilato con "#define DEBUG") e falso altrimenti. Ma questo sembra un po 'di un hack per somthing Sono sicuro che posso ottenere python a dirmi ...

+1

Hai pensato di usare le stringhe prime, per evitare l'eccesso fuga? r'bin \ debug \ direct3d9.dll' – cdleary

risposta

2

Un modo semplice, se non ti dispiace fare affidamento sul nome del file:

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

È può leggere di più sul modulo sys e sui suoi vari servizi here.

3

Meglio, perché funziona anche quando si esegue un interprete Python integrato è quello di verificare il valore di ritorno di

imp.get_suffixes() 

Per una build di debug contiene una tupla che iniziano con '_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)]