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