Python debug flag

|

원인

  • Python에서 global debug flag를 가져다 쓰고싶었음..
  • 찾아보니 __debug__라는 flag를 지원한다.
    • 동작 방식
      • -O 또는 -OO flag를 주면 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