Prettifies output pengecualian Python agar terbaca. Instal dengan
python -m pip install pretty_errors
Jika Anda ingin pretty_errors
digunakan setiap kali Anda menjalankan skrip Python, Anda harus menambahkannya ke prosedur startup Python Anda. Anda dapat melakukannya dengan mudah dengan menjalankan:
python -m pretty_errors
Ini adalah cara yang disarankan untuk menggunakan pretty_errors
; Selain lebih sederhana dan universal, menggunakannya akan berarti pengecualian SyntaxError
juga mendapatkan format yang cantik (yang tidak berfungsi jika Anda secara manual mengimpor pretty_errors
).
Jika Anda belum menginstalnya secara universal, Anda dapat menggunakannya di proyek Anda hanya dengan mengimpornya:
import pretty_errors
Catatan Anda harus berjalan di terminal yang mampu output warna untuk mendapatkan output warna: di windows ini berarti PowerShell, cmder, dll. Jika Anda harus menggunakan terminal monokrom maka Anda dapat memanggil fungsi helper pretty_errors.mono()
, yang akan mengatur beberapa opsi konfigurasi dengan cara yang berguna untuk output monokrom.
Jika Anda ingin mengonfigurasi output maka gunakan pretty_errors.configure()
, pretty_errors.whitelist()
, pretty_errors.blacklist()
, pretty_errors.pathed_config()
. Misalnya:
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' )
Terkadang tidak mungkin bagi pretty_errors
untuk menggunakan sys.excepthook
: misalnya, jika Anda menggunakan kerangka kerja yang menginstal loggingnya sendiri (seperti uvicorn
). Dalam kasus seperti itu, Anda dapat membuat pretty_errors
mengikis output ke stderr
sebagai gantinya, menggantinya dengan sendirinya. Untuk melakukan panggilan sederhana:
pretty_errors . replace_stderr ()
Perhatikan bahwa ini akan kehilangan beberapa fungsionalitas, karena pretty_errors
hanya akan memiliki akses ke apa yang menjadi output di layar, daripada seluruh jejak tumpukan. API yang baik umumnya akan memiliki cara untuk berinteraksi dengan tumpukan pengecualian, yang akan memungkinkan untuk menggunakan excepthook
: replace_stderr
harus menjadi pilihan terakhir. Lihat komentar ini untuk sebuah contoh
Anda dapat menggunakan fungsi whitelist(path)
dan blacklist(path)
untuk menambahkan jalur yang akan diperlukan ( whitelist
) atau dikecualikan ( blacklist
). Bingkai teratas tumpukan tidak pernah dikecualikan.
Anda dapat mengatur konfigurasi alternatif, yang dipicu oleh jalur ke file kode bingkai. Misalnya, jika Anda tidak tertarik pada bingkai sistem (yang di bawah 'C:/Python') tetapi tidak ingin menyembunyikannya sepenuhnya dengan menggunakan blacklist
Anda bisa melakukan ini:
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' )
pretty_errors
dengan mengatur variabel lingkungan PYTHON_PRETTY_ERRORS
ke 0
. yaitu pada prompt perintah: set PYTHON_PRETTY_ERRORS=0
Memanggil pretty_errors.activate()
akan menimpa ini.
Jika Anda ingin secara selektif memanfaatkan pretty_errors
, maka gunakan yang di atas, dan dalam kode Anda, lakukan perhitungan Anda untuk menentukan apakah akan memanggil pretty_errors.activate()
.
pretty_errors
saat Anda mengarahkan output ke file (untuk menjaga log kesalahan, misalnya). Jika Anda ingin melakukannya, maka mengatur PYTHON_PRETTY_ERRORS_ISATTY_ONLY
ke non-nol akan menyebabkan pretty_errors
untuk memeriksa apakah berjalan di terminal interaktif, dan hanya mengaktifkan jika demikian. set PYTHON_PRETTY_ERRORS_ISATTY_ONLY=1
Pengaturan Ini akan menonaktifkan replace_stderr()
dalam situasi yang sama, kecuali Anda menyebutnya dengan parameter force
: replace_stderr(force=True)
.
Memanggil pretty_errors.activate()
akan menimpa ini.
Anda dapat memeriksa pretty_errors.terminal_is_interactive
untuk melihat apakah terminal interaktif ( pretty_errors
mengatur ini dengan memeriksa sys.stderr.isatty()
). Anda dapat menggunakan ini untuk memilih konfigurasi yang berbeda. Misalnya:
if not pretty_errors . terminal_is_interactive :
pretty_errors . mono ()
Pengaturan konfigurasi disimpan di pretty_errors.config
, meskipun harus diatur menggunakan pretty_errors.configure()
. Referensi untuk konfigurasi default disimpan di pretty_errors.default_config
.
name
Bidang opsional untuk menyimpan nama konfigurasi di.
line_length
Output akan dibungkus pada saat ini. Jika diatur ke 0
(yang merupakan default) itu akan secara otomatis cocok dengan lebar konsol Anda.
full_line_newline
Masukkan newline yang keras bahkan jika salurannya penuh. Jika line_length
sama dengan lebar konsol Anda dan ini diaktifkan maka Anda akan melihat Newline ganda ketika garis persis penuh, jadi biasanya Anda hanya akan mengatur ini jika berbeda.
separator_character
Karakter yang digunakan untuk membuat garis header. Hyphen digunakan secara default. Jika diatur ke None
atau ''
maka header akan dinonaktifkan.
display_timestamp
Saat diaktifkan cap waktu ditulis di header Traceback.
timestamp_function
Fungsi dipanggil untuk menghasilkan cap waktu. Default adalah time.perf_counter
.
exception_above
Saat diaktifkan, pengecualian ditampilkan di atas jejak tumpukan.
exception_below
Saat diaktifkan, pengecualian ditampilkan di bawah jejak tumpukan.
stack_depth
Jumlah maksimum entri dari jejak tumpukan untuk ditampilkan. Saat 0
akan menampilkan seluruh tumpukan, yang merupakan default.
top_first
Saat diaktifkan, jejak tumpukan akan dibalik, menampilkan bagian atas tumpukan terlebih dahulu.
always_display_bottom
Saat diaktifkan (yang merupakan default) bingkai bawah jejak tumpukan akan selalu ditampilkan.
show_suppressed
Ketika diaktifkan semua pengecualian yang ditekan dalam jejak tumpukan akan ditampilkan (biasanya mereka ditekan karena pengecualian di atas mereka telah menggantikannya). Perilaku Python normal adalah menyembunyikannya.
filename_display
Bagaimana nama file ditampilkan: mungkin pretty_errors.FILENAME_COMPACT
, pretty_errors.FILENAME_EXTENDED
, atau pretty_errors.FILENAME_FULL
line_number_first
Saat diaktifkan, nomor baris akan ditampilkan terlebih dahulu, bukan nama file.
display_link
Saat diaktifkan tautan ditulis di bawah lokasi kesalahan, vscode mana yang memungkinkan Anda untuk mengklik.
lines_after
, lines_before
Berapa banyak baris kode untuk ditampilkan untuk bingkai atas, sebelum dan sesudah garis pengecualian terjadi.
trace_lines_after
, trace_lines_before
Berapa banyak baris kode yang akan ditampilkan untuk satu bingkai satu sama lain dalam jejak tumpukan, sebelum dan sesudah garis pengecualian terjadi.
truncate_code
Saat diaktifkan setiap baris kode akan dipotong agar sesuai dengan panjang garis.
display_locals
Saat diaktifkan, variabel lokal yang muncul di kode bingkai tumpukan atas akan ditampilkan dengan nilainya.
display_trace_locals
Saat diaktifkan, variabel lokal yang muncul di kode bingkai tumpukan lainnya akan ditampilkan dengan nilainya.
truncate_locals
Saat diaktifkan nilai -nilai variabel lokal yang ditampilkan akan dipotong agar sesuai dengan panjang garis.
display_arrow
Saat diaktifkan panah akan ditampilkan untuk kesalahan sintaks, menunjuk ke token yang menyinggung.
arrow_head_character
, arrow_tail_character
Karakter yang digunakan untuk menggambar panah yang menunjuk pada kesalahan sintaks.
inner_exception_message
Pesan ditampilkan ketika satu pengecualian terjadi di dalam yang lain, di antara dua pengecualian. Default None
, yang hanya akan menampilkan pengecualian yang dipisahkan oleh header. Jika Anda ingin meniru perilaku non-cantik default, gunakan ini:
inner_exception_message = pretty_errors.MAGENTA + "n During handling of the above exception, another exception occurred:n"
Perhatikan bahwa jika Anda menggunakan top_first
maka pesanan akan dibalik, jadi Anda harus menggunakan pesan seperti ini sebagai gantinya:
inner_exception_message = pretty_errors.MAGENTA + "n The above exception occurred during another exception:n"
inner_exception_separator
Default False
. Ketika diatur ke True
header akan ditulis sebelum inner_exception_message
.
prefix
String teks yang ditampilkan di bagian atas laporan, tepat di bawah header.
infix
String teks yang ditampilkan di antara setiap bingkai tumpukan.
postfix
String teks yang ditampilkan di bagian bawah laporan pengecualian.
reset_stdout
Saat diaktifkan, urutan pelarian reset akan ditulis ke stdout serta stderr; Hidupkan ini jika konsol Anda ditinggalkan dengan warna yang salah.
String warna ini akan menjadi output sebelum bagian yang relevan dari pesan pengecualian. Anda dapat menyertakan string urutan non-escape jika Anda mau; Jika Anda tidak memiliki terminal yang mendukung output warna, atau hanya ingin memasukkan demarkasi tambahan.
header_color
Urutan melarikan diri untuk mengatur warna header.
timestamp_color
Urutan melarikan diri untuk mengatur warna cap waktu.
exception_color
Urutan melarikan diri untuk mengatur warna pengecualian.
exception_arg_color
Urutan melarikan diri untuk mengatur warna argumen pengecualian.
exception_file_color
Urutan melarikan diri untuk mengatur warna nama file dalam pengecualian (misalnya, dalam filenotfounderror).
filename_color
Urutan melarikan diri untuk mengatur warna nama file.
line_number_color
Urutan melarikan diri untuk mengatur warna nomor garis.
function_color
Urutan melarikan diri untuk mengatur warna fungsi.
link_color
Urutan melarikan diri untuk mengatur warna tautan.
line_color
Urutan melarikan diri untuk mengatur warna garis kode yang menyebabkan pengecualian.
code_color
Urutan melarikan diri untuk mengatur warna baris kode yang ditampilkan.
arrow_head_color
, arrow_tail_color
Urutan melarikan diri untuk mengatur warna panah yang menunjuk pada kesalahan sintaksis.
syntax_error_color
Urutan melarikan diri untuk mengatur warna token kesalahan sintaks.
local_name_color
Urutan melarikan diri untuk mengatur warna nama variabel lokal.
local_value_color
Urutan melarikan diri untuk mengatur warna nilai variabel lokal.
local_len_color
Urutan melarikan diri untuk mengatur warna panjang nilai lokal ketika lokal terpotong.
pretty_errors
memiliki beberapa konstanta urutan pelarian yang dapat Anda gunakan saat mengatur warna -warna ini:
BLACK
GREY
RED
GREEN
YELLOW
BLUE
MAGENTA
CYAN
WHITE
Untuk setiap warna ada varian BRIGHT_
yang cocok (yaitu pretty_errors.BRIGHT_RED
), serta varian _BACKGROUND
untuk mengatur warna latar belakang (yaitu pretty_errors.RED_BACKGROUND
).
Misalnya:
pretty_errors . configure (
line_color = pretty_errors . CYAN_BACKGROUND + pretty_errors . BRIGHT_WHITE
)
Untuk kustomisasi yang paling luas (pendek dari paket forking), Anda dapat mengganti kelas ExceptionWriter
default, yang memungkinkan Anda menyesuaikan output sesuka Anda. Biasanya Anda hanya perlu mengesampingkan metode write_
.
Misalnya:
class MyExceptionWriter ( pretty_errors . ExceptionWriter ):
def write_header ( self ):
self . output_text ( '######## ERROR ########' )
pretty_errors . exception_writer = MyExceptionWriter ()
Jalankan help(pretty_errors.ExceptionWriter)
di Interpreter Python untuk lebih jelasnya.