Python Exception 출력을 예열하여 읽기 쉽게 만들 수 있습니다. 설치하십시오
python -m pip install pretty_errors
Python 스크립트를 실행할 때마다 pretty_errors
사용하려면 Python 시작 절차에 추가해야합니다. 실행을 통해 쉽게 할 수 있습니다.
python -m pretty_errors
이것은 pretty_errors
사용하는 권장 방법입니다. 더 단순하고 보편적 인 것 외에도,이를 사용하면 SyntaxError
예외가 예쁘게 형식화된다는 것을 의미합니다 ( pretty_errors
수동으로 가져 오는 경우 작동하지 않음).
보편적으로 설치하지 않은 경우 프로젝트에서 단순히 가져 와서 사용할 수 있습니다.
import pretty_errors
참고 색상 출력을 얻으려면 색상 출력이 가능한 터미널에서 실행해야합니다. Windows에서는 PowerShell, Cmder 등을 의미합니다. 흑백 터미널을 사용해야한다면 Helper Function pretty_errors.mono()
, 단색 출력에 유용한 방식으로 구성 옵션을 설정합니다.
출력을 구성하려면 pretty_errors.configure()
, pretty_errors.whitelist()
, pretty_errors.blacklist()
, pretty_errors.pathed_config()
사용하십시오. 예를 들어:
import pretty_errors
pretty_errors . configure (
separator_character = '*' ,
filename_display = pretty_errors . FILENAME_EXTENDED ,
line_number_first = True ,
display_link = True ,
lines_before = 5 ,
lines_after = 2 ,
line_color = pretty_errors . RED + '> ' + pretty_errors . default_config . line_color ,
code_color = ' ' + pretty_errors . default_config . line_color ,
truncate_code = True ,
display_locals = True
)
pretty_errors . blacklist ( 'c:/python' )
때로는 pretty_errors
가 sys.excepthook
사용하는 것이 불가능할 것입니다. 예를 들어, 자체 로깅 (예 : uvicorn
)을 설치하는 프레임 워크를 사용하는 경우. 이 경우 pretty_errors
출력을 대신 stderr
로 긁어 내고 자체로 대체 할 수 있습니다. 그렇게 간단한 전화를하려면 :
pretty_errors . replace_stderr ()
pretty_errors
화면에서 출력되는 내용에만 액세스 할 수 있으므로 전체 스택 추적보다는 기능을 잃게됩니다. 좋은 API는 일반적으로 예외 스택과 상호 작용하는 방법이있어 excepthook
사용할 수 있습니다. replace_stderr
마지막 수단이어야합니다. 예를 들어이 의견을 참조하십시오
whitelist(path)
및 blacklist(path)
기능을 사용하여 필요한 경로 ( whitelist
) 또는 제외 ( blacklist
)를 추가 할 수 있습니다. 스택의 상단 프레임은 배제되지 않습니다.
프레임의 코드 파일 경로에 의해 트리거되는 대체 구성을 설정할 수 있습니다. 예를 들어, 시스템 프레임 ( 'C :/Python'아래)에 관심이 없지만 blacklist
를 사용하여 완전히 숨기고 싶지 않은 경우 다음을 수행 할 수 있습니다.
meh = pretty_errors . config . copy ()
meh . line_color = meh . code_color = meh . filename_color = meh . function_color = meh . line_number_color = (
pretty_errors . GREY
)
pretty_errors . pathed_config ( meh , 'c:/python' )
PYTHON_PRETTY_ERRORS
0
으로 설정하여 pretty_errors
비활성화 할 수 있습니다. 즉 명령 프롬프트에서 : set PYTHON_PRETTY_ERRORS=0
pretty_errors.activate()
호출하면 이것을 무시합니다.
pretty_errors
선택적으로 사용하려면 위의 것을 사용하고 코드에서 Calculation을 수행하여 pretty_errors.activate()
호출할지 여부를 결정하십시오.
pretty_errors
비활성화하는 것이 바람직 할 수 있습니다 (예 : 오류 로그를 유지하려면). 그렇게하려면 PYTHON_PRETTY_ERRORS_ISATTY_ONLY
0이 아닌 것으로 설정하면 pretty_errors
가 대화식 터미널에서 실행 중인지 확인하고 그렇게하면 활성화됩니다. set PYTHON_PRETTY_ERRORS_ISATTY_ONLY=1
이 설정은 force
매개 변수를 호출하지 않는 한 동일한 상황에서 REPLECTDERR replace_stderr(force=True)
호출하지 않는 한 replace_stderr()
비활성화합니다.
pretty_errors.activate()
호출하면 이것을 무시합니다.
pretty_errors.terminal_is_interactive
확인하여 터미널이 대화식인지 확인할 수 있습니다 ( pretty_errors
sys.stderr.isatty()
확인하여이를 설정합니다). 이것을 사용하여 다른 구성을 선택할 수 있습니다. 예를 들어:
if not pretty_errors . terminal_is_interactive :
pretty_errors . mono ()
구성 설정은 pretty_errors.config
에 저장되지만 pretty_errors.configure()
사용하여 설정해야합니다. 기본 구성에 대한 참조는 pretty_errors.default_config
에 저장됩니다.
name
구성 이름을 저장하는 필드.
line_length
이 시점에서 출력이 포장됩니다. 0
으로 설정하면 (기본값 인) 콘솔 너비를 자동으로 일치시킵니다.
full_line_newline
라인이 가득 찼더라도 하드 신자를 삽입하십시오. line_length
콘솔 너비와 동일하고 활성화 된 경우 라인이 정확히 가득 차면 이중 신자 라인이 표시되므로 일반적으로 다른 경우에만 설정합니다.
separator_character
헤더 라인을 만드는 데 사용되는 문자. 하이픈은 기본적으로 사용됩니다. None
''
로 설정되면 헤더가 비활성화됩니다.
display_timestamp
활성화 된 경우 Traceback 헤더에 타임 스탬프가 작성됩니다.
timestamp_function
타임 스탬프를 생성하기 위해 호출 된 함수. 기본값은 time.perf_counter
입니다.
exception_above
활성화되면 스택 추적 위에 예외가 표시됩니다.
exception_below
활성화되면 스택 추적 아래에 예외가 표시됩니다.
stack_depth
스택 트레이스에서 표시까지 최대 항목 수. 0
이 기본값 인 전체 스택을 표시 할 때.
top_first
활성화되면 스택 추적이 반전되면 스택 상단을 먼저 표시합니다.
always_display_bottom
활성화 (기본값)가 있으면 스택 추적의 하단 프레임이 항상 표시됩니다.
show_suppressed
활성화 된 경우 스택 트레이스에서 모든 억제 된 예외가 표시됩니다 (일반적으로 위의 예외가 대체 되었기 때문에 억제됩니다). 정상적인 파이썬 동작은 그것들을 숨기는 것입니다.
filename_display
파일 이름이 표시되는 방법 : pretty_errors.FILENAME_COMPACT
, pretty_errors.FILENAME_EXTENDED
또는 pretty_errors.FILENAME_FULL
일 수 있습니다.
line_number_first
활성화되면 파일 이름이 아닌 줄 번호가 먼저 표시됩니다.
display_link
활성화 된 경우 링크가 오류 위치 아래에 기록되면 VSCODE를 클릭 할 수 있습니다.
lines_after
, lines_before
선 전후에 상단 프레임에 표시 할 코드 라인 수는 예외가 발생했습니다.
trace_lines_after
, trace_lines_before
스택 트레이스에서 서로 프레임에 대해 표시 할 코드 라인 수는 줄기 전후에 예외가 발생했습니다.
truncate_code
활성화되면 각 코드 라인은 선 길이에 맞게 잘립니다.
display_locals
활성화되면 상단 스택 프레임 코드에 표시되는 로컬 변수가 해당 값으로 표시됩니다.
display_trace_locals
활성화되면 다른 스택 프레임 코드에 표시되는 로컬 변수가 해당 값으로 표시됩니다.
truncate_locals
활성화되면 표시된 로컬 변수의 값이 선 길이에 맞게 잘립니다.
display_arrow
활성화되면 화살표가 구문 오류에 대해 표시되며, 불쾌한 토큰을 가리 킵니다.
arrow_head_character
, arrow_tail_character
문자는 구문 오류를 가리키는 화살표를 그리는 데 사용됩니다.
inner_exception_message
한 예외는 두 예외 사이에 다른 예외가 발생할 때 표시됩니다. 기본값은 None
헤더로 분리 된 예외를 단순히 표시합니다. 기본 비 예시적 동작을 모방하려면 다음을 사용하십시오.
inner_exception_message = pretty_errors.MAGENTA + "n During handling of the above exception, another exception occurred:n"
top_first
사용하면 순서가 반전되므로 대신 이와 같은 메시지를 사용해야합니다.
inner_exception_message = pretty_errors.MAGENTA + "n The above exception occurred during another exception:n"
inner_exception_separator
기본값은 False
입니다. True
로 설정하면 inner_exception_message
전에 헤더가 작성됩니다.
prefix
보고서의 상단에 헤더 바로 아래에 표시되는 텍스트 문자열.
infix
스택의 각 프레임 사이에 표시되는 텍스트 문자열.
postfix
예외 보고서의 맨 아래에 표시되는 텍스트 문자열.
reset_stdout
활성화되면 재설정 탈출 시퀀스가 STDERR뿐만 아니라 STDOUT에 기록됩니다. 콘솔이 잘못된 색상으로 남겨두면이 켜십시오.
이러한 색상 문자열은 예외 메시지의 관련 부분 전에 출력됩니다. 원하는 경우 비 에스케이프 시퀀스 문자열을 포함시킬 수 있습니다. 색상 출력을지지하는 터미널이 없거나 단순히 추가 경계를 포함하려는 경우.
header_color
헤더 색상을 설정하는 탈출 시퀀스.
timestamp_color
타임 스탬프 색상을 설정하는 탈출 시퀀스.
exception_color
예외 색상을 설정하기위한 탈출 시퀀스.
exception_arg_color
예외 인수 색상을 설정하기위한 탈출 시퀀스.
exception_file_color
예외에서 파일 이름의 색상을 설정하는 데스 시퀀스 (예 : filenotfounderRor).
filename_color
파일 이름 색상을 설정하는 탈출 시퀀스.
line_number_color
선거 번호 색상을 설정하는 탈출 시퀀스.
function_color
기능 색상을 설정하기위한 탈출 시퀀스.
link_color
링크 색상을 설정하는 탈출 시퀀스.
line_color
탈출 시퀀스는 코드 라인의 색상을 설정하여 예외를 일으킨다.
code_color
다른 표시된 코드 라인의 색상을 설정하는 탈출 시퀀스.
arrow_head_color
, arrow_tail_color
구문 오류를 가리키는 화살표의 색상을 설정하기 위해 시퀀스를 탈출합니다.
syntax_error_color
구문 오류 토큰의 색상을 설정하기위한 탈출 시퀀스.
local_name_color
로컬 변수 이름의 색상을 설정하는 탈출 시퀀스.
local_value_color
로컬 변수 값의 색상을 설정하는 탈출 시퀀스.
local_len_color
탈출 시퀀스 로컬이 잘린 경우 로컬 값 길이의 색상을 설정합니다.
pretty_errors
이러한 색상을 설정할 때 사용할 수있는 이스케이프 시퀀스 상수가 있습니다.
BLACK
GREY
RED
GREEN
YELLOW
BLUE
MAGENTA
CYAN
WHITE
각 색상마다 일치하는 BRIGHT_
변형 (예 : pretty_errors.BRIGHT_RED
)과 배경색 (예 : pretty_errors.RED_BACKGROUND
)을 설정하기위한 _BACKGROUND
변형이 있습니다.
예를 들어:
pretty_errors . configure (
line_color = pretty_errors . CYAN_BACKGROUND + pretty_errors . BRIGHT_WHITE
)
가장 광범위한 사용자 정의 (패키지 포킹 부족)의 경우 기본 ExceptionWriter
클래스를 무시할 수 있으므로 원하는대로 출력을 조정할 수 있습니다. 일반적으로 write_
메소드 만 재정의하면됩니다.
예를 들어:
class MyExceptionWriter ( pretty_errors . ExceptionWriter ):
def write_header ( self ):
self . output_text ( '######## ERROR ########' )
pretty_errors . exception_writer = MyExceptionWriter ()
자세한 내용은 Python 통역사에서 help(pretty_errors.ExceptionWriter)
실행하십시오.