2009-03-14 12 views
12

Pythonスクリプトでデバッグインタープリタ(python.exeではなくpython_d.exe)が実行されている場合、どのように検出できますか?私は拡張機能に渡すいくつかのDLLへのパスを変更する必要があります。それはデバッグがある場合、私はtrueを返します拡張子を「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は私のPythonスクリプトの開始時にこのような何かをしたいですビルド(つまり、 "#define DEBUG"でビルドされました)、それ以外の場合はfalseです。しかし、これは私はあなたがファイル名に頼る気にしない場合のpythonは、簡単な方法...

+1

あなたは余分なエスケープを避けるために、生の文字列を使用して考えがありますか? rbin \ debug \ direct3d9.dll ' – cdleary

答えて

2

を私に教えてもらうことができます気にいらないイムのためのハックのビット確からしい:

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

あなたはsysモジュールとそのさまざまな機能の詳細については、hereを参照してください。

3

より良い、あなたが埋め込まれたPythonインタプリタを実行しているときにも動作するためには、それは_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)] 
関連する問題