2009-10-20 8 views
8

Jeśli jestem w trybie debugowania, chcę robić inne rzeczy, niż gdy nie jestem.Jak sprawdzić, czy opcja debugowania pythona jest ustawiona w skrypcie

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" 

następnie:

python script.py 
not debug mode 

python -d script.py 
debug mode 

Jak można wykryć, że? Z pewnością nie używa zmiennej __debug__.

+0

Cóż, aby wyjaśnić poniższe pytania. Wszystko, co naprawdę chcę zrobić, to odebrać pewne informacje z ogólnego środowiska, ale próbowałem ustawić zmienną środowiskową i szukałem jej w os.environ, ale to nie zawsze działa. – user132262

+0

niezwiązane z opcją -d: [Python: Jak wykryć interpreter debugowania] (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-running? answerertab = aktywny # tab-top Ta odpowiedź działa dla mnie. –

Odpowiedz

6

tryb debug parsera włączony jest z opcją -d poleceń lub zmiennej środowiskowej PYTHONDEBUG a od Pythona 2.6 znajduje odzwierciedlenie w sys.flags.debug. Ale czy jesteś pewien, że tego właśnie szukasz?

+0

To działa dla wersji 2.6 i wyżej, dziękuję. Teraz, jeśli ktoś ma odpowiedź na 2.5 i poniżej? – user132262

12

można użyć python -O z __debug__ zmienna

gdzie -O środki optymalizacji. tak __debug__ jest fałszywa

-d włącza debugowanie dla parsera, który nie jest tym, co chcesz

+0

tak, -O stale monitoruje skrypt i nawet nie trzeba ponownie ładować – igaurav