Python debug flag
04 Apr 2018 | python debug원인
- Python에서 global debug flag를 가져다 쓰고싶었음..
- 찾아보니
__debug__라는 flag를 지원한다.- 동작 방식
-O또는-OOflag를 주면 False가 된다.- 안주면 True!
- 위의 플래그는 optimize flag인데, 릴리즈 전에는 optimize를 한다는 가정하에 쓴 것 같다..
- 동작 방식
- 좀 불편해보여서 다른 방식이 있나 찾아보았다.
sys.flags.debug를 가지고도 알 수 있다.-d옵션을 주면sys.flags.debug가 켜진다.
| attribute | flag |
|---|---|
| debug | -d |
| py3k_warning | -3 |
| division_warning | -Q |
| division_new | -Qnew |
| inspect | -i |
| interactive | -i |
| optimize | -O or -OO |
| dont_write_bytecode | -B |
| no_user_site | -s |
| no_site | -S |
| ignore_environment | -E |
| tabcheck | -t or -tt |
| verbose | -v |
| unicode | -U |
| bytes_warning | -b |
| hash_randomization | -R |
예시
root@brain-dev-gpu1:~# python -OO test.py
sys.flags.debug = 0
sys.flags.optimize = 2
__debug__ = False
root@brain-dev-gpu1:~# python -O test.py
sys.flags.debug = 0
sys.flags.optimize = 1
__debug__ = False
root@brain-dev-gpu1:~# python -d test.py
sys.flags.debug = 1
sys.flags.optimize = 0
__debug__ = True
root@brain-dev-gpu1:~# python test.py
sys.flags.debug = 0
sys.flags.optimize = 0
__debug__ = True