一行代碼,讓你的 Python bug 與眾不同
PrettyErrors 是一個精簡 Python 錯誤信息的工具,特點是界面十分簡潔友好。
它最顯著的功能是支持在終端進行彩色輸出,標注出文件棧蹤跡,發現錯誤信息,過濾掉冗余信息,提取出關鍵部分,并且進行彩色標注,從而提高開發者的效率。
寫代碼本身就很不容易,特別是在幾萬行的代碼中出現一個bug,一時半會找不到問題所在,這個時候,你一定很抓狂,很煩躁。特別是Python代碼出錯了,滿屏幕大段大段的錯誤信息提示,想定位錯誤更是難上加難。
先來看看上面這段 traceback
- 只有一種顏色,無法像代碼高亮那樣,對肉眼實現太不友好了
- 無法直接顯示報錯的代碼,排查問題慢人一步,效率太低
那有沒有一種辦法,可以解決這些問題呢?
當然有了,在 Python 中,沒有什么問題是一個庫解決不了的,別亂如麻的Python報錯輸出,一行代碼讓bug更清晰。
今天要介紹的這個庫呢,叫做 pretty-errors ,從名字上就可以知道它的用途,是用來美化錯誤信息的。
下面介紹如何安裝使用PrettyErrors。
通過這條命令你可以安裝它
linuxmi@linuxmi:~/www.linuxmi.com$ pip install pretty_errors
或者
linuxmi@linuxmi:~/www.linuxmi.com$ pip3 install pretty-errors
全局配置
如果你想讓你的每一個程序都能這樣在報錯時使其清晰易讀,那么運行下面這這行命令配置全局可用。
linuxmi@linuxmi:~/www.linuxmi.com$ python3 -m pretty_errors
配置完成后,你再運行任何腳本,traceback 都會自動美化了。
取消全局配置
同樣運行這個命令
linuxmi@linuxmi:~/www.linuxmi.com$ python3 -m pretty_errors
輸入 C 即可清除全局配置。
單文件中使用
取消全局可用后,你可以根據自己需要,在你需要使用 pretty-errors 的腳本文件中導入 pretty_errors ,即可使用
import pretty_errors
但是這樣,語法錯誤(SyntaxError)的格式就不能被美化。所以為了讓美化更徹底,官方推薦你使用 python -m pretty_errors
不喜歡默認配置,試試這幾個函數:
pretty_errors.configure()
pretty_errors.whitelist()
pretty_errors.blacklist()
pretty_errors.pathed_config()
比如要改變輸出文件名的顏色,代碼是這樣的:
pretty_errors.configure(filename_color = pretty_errors.BRIGHT_YELLOW)
如果你發現上面這一番操作之后,啥改變也沒發生,那就檢查一下PYTHON_PRETTY_ERRORS,當它的值為0時,PrettyErrors是被禁用的。
set PYTHON_PRETTY_ERRORS = 1
需要注意的是,你使用的終端本身具有顏色輸出功能,異常信息輸出才會帶有不同的顏色。如果不巧你慣用的是單色終端,那么可以試試 pretty_errors.mono() 中的設置。
自定義配置示例
from pretty_errors import *
configure(filename_color=BRIGHT_BLUE) # 設置文件名為亮藍色
def f():
return 1 / 0
if __name__ == "__main__":
f()
結語
總的來說,這個庫功能非常強大,使用效果也特別酷炫,它就跟 PEP8 規范一樣,沒有它是可以,但是有了它會更好一樣。對于某些想自定義錯誤輸出場景的人,pretty_errors 會是一個不錯的解決方案。