2009-10-20 2 views
8

Если я в режиме отладки, я хочу делать другие вещи, чем когда нет.Как проверить, установлена ​​ли опция отладки python из сценария

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" 

затем:

python script.py 
not debug mode 

python -d script.py 
debug mode 

Как я могу определить, что? Он, конечно, не использует переменную __debug__.

+0

Чтобы уточнить приведенные ниже вопросы. Все, что я действительно хочу сделать, это собрать некоторую информацию из общей среды, но я попытался установить переменную окружения и искать ее в os.environ, но это не всегда работает. – user132262

+0

, не связанный с опцией '-d': [Python: как обнаружить интерпретатор отладки] (http://stackoverflow.com/questions/646518/python-how-to-detect-debug-interpreter) – jfs

+0

http: // stackoverflow. com/questions/27748132/is-there-a-flag-i-can-check-in-my-code-to-see-if-pycharms-debugger-is-running? answertab = active # tab-top Этот ответ работает для меня. –

ответ

6

режим отладки Parser включен с опцией -d командной строки или переменной окружения PYTHONDEBUG и, начиная с Python 2.6 отражается в sys.flags.debug. Но уверены ли вы, что это то, что вы ищете?

+0

Это работает на 2,6 и выше, спасибо. Теперь, если у кого-то есть ответ на 2,5 и ниже? – user132262

12

вы можете использовать python -O с __debug__ переменной

где -O средства оптимизации. так __debug__ ложна

-d включает отладку для синтаксического анализа, который является не то, что вы хотите

+0

Да, -O постоянно контролирует сценарий и даже не нужно перезагружать – igaurav

Смежные вопросы