How can I detect in my python script if its being run by the debug interpreter (ie python_d.exe rather than python.exe)? I need to change the paths to some dlls that I pass
Distutils use sys.gettotalrefcount to detect a debug python build:
# ...
if hasattr(sys, 'gettotalrefcount'):
plat_specifier += '-pydebug'
*_d.exe
'. It works for any name._d.pyd
' suffix.See Debugging Builds and Misc/SpecialBuilds.txt
Better, because it also works when you are running an embedded Python interpreter is to check the return value of
imp.get_suffixes()
For a debug build it contains a tuple starting with '_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)]
An easy way, if you don't mind relying on the file name:
if sys.executable.endswith("_d.exe"):
print "running on debug interpreter"
You can read more about the sys
module and its various facilities here.