How do I check if the python debug option is set from within a script
Asked Answered
S

2

11

If I'm in debug mode, I want to do other stuff than when I'm not.

if DEBUG:
    STORED_DATA_FILE = os.path.join(TEMP_DIR, 'store.dat')
    LOG_LEVEL = logging.DEBUG
    print "debug mode"
else:
    STORED_DATA_FILE = os.path.join(SCRIPT_PATH, 'store.dat')
    LOG_LEVEL = logging.INFO
    print "not debug mode"

then:

python script.py
not debug mode

python -d script.py
debug mode

How can I detect that? It certainly isn't using the __debug__ variable.

Stabler answered 20/10, 2009 at 8:50 Comment(3)
Well to clarify for the questions below. All I really want to do is pick up some information from the general environment, but I tried setting an environment variable and looking for it in os.environ but that does not always work.Stabler
unrelated to -d option: Python: How to detect debug interpreterMcdougald
#27748632 This answer work for me.Exhale
H
9

Parser debug mode is enabled with -d commandline option or PYTHONDEBUG environment variable and starting from python 2.6 is reflected in sys.flags.debug. But are you sure this is what you are looking for?

Heaume answered 20/10, 2009 at 9:19 Comment(1)
That works for 2.6 and above, thanks. Now if anyone has an answer for 2.5 and below?Stabler
S
14

you can use python -O with the __debug__ variable

where -O means optimise. so __debug__ is false

-d turns on debugging for the parser, which is not what you want

Spiraea answered 20/10, 2009 at 9:8 Comment(1)
yes , -O continuously monitors the script and don't even need to reloadSupen
H
9

Parser debug mode is enabled with -d commandline option or PYTHONDEBUG environment variable and starting from python 2.6 is reflected in sys.flags.debug. But are you sure this is what you are looking for?

Heaume answered 20/10, 2009 at 9:19 Comment(1)
That works for 2.6 and above, thanks. Now if anyone has an answer for 2.5 and below?Stabler

© 2022 - 2024 — McMap. All rights reserved.