深圳幻海软件技术有限公司 欢迎您!

一行代码,让你的 Python bug 与众不同

2023-02-28

PrettyErrors是一个精简Python错误信息的工具,特点是界面十分简洁友好。它最显著的功能是支持在终端进行彩色输出,标注出文件栈踪迹,发现错误信息,过滤掉冗余信息,提取出关键部分,并且进行彩色标注,从而提高开发者的效率。写代码本身就很不容易,特别是在几万行的代码中出现一个bug,一时半会找

PrettyErrors 是一个精简 Python 错误信息的工具,特点是界面十分简洁友好。

它最显著的功能是支持在终端进行彩色输出,标注出文件栈踪迹,发现错误信息,过滤掉冗余信息,提取出关键部分,并且进行彩色标注,从而提高开发者的效率。

写代码本身就很不容易,特别是在几万行的代码中出现一个bug,一时半会找不到问题所在,这个时候,你一定很抓狂,很烦躁。特别是Python代码出错了,满屏幕大段大段的错误信息提示,想定位错误更是难上加难。

先来看看上面这段 traceback

  • 只有一种颜色,无法像代码高亮那样,对肉眼实现太不友好了
  • 无法直接显示报错的代码,排查问题慢人一步,效率太低

那有没有一种办法,可以解决这些问题呢?

当然有了,在 Python 中,没有什么问题是一个库解决不了的,别乱如麻的Python报错输出,一行代码让bug更清晰。

今天要介绍的这个库呢,叫做 pretty-errors ,从名字上就可以知道它的用途,是用来美化错误信息的。

下面介绍如何安装使用PrettyErrors。

通过这条命令你可以安装它

linuxmi@linuxmi:~/www.linuxmi.com$ pip install pretty_errors
  • 1.

或者

linuxmi@linuxmi:~/www.linuxmi.com$ pip3 install pretty-errors
  • 1.

全局配置

如果你想让你的每一个程序都能这样在报错时使其清晰易读,那么运行下面这这行命令配置全局可用。

linuxmi@linuxmi:~/www.linuxmi.com$ python3 -m pretty_errors
  • 1.

配置完成后,你再运行任何脚本,traceback 都会自动美化了。

取消全局配置

同样运行这个命令

linuxmi@linuxmi:~/www.linuxmi.com$ python3 -m pretty_errors
  • 1.

输入 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()
  • 1.
  • 2.
  • 3.
  • 4.

比如要改变输出文件名的颜色,代码是这样的:

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()
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.

结语

总的来说,这个库功能非常强大,使用效果也特别酷炫,它就跟 PEP8 规范一样,没有它是可以,但是有了它会更好一样。对于某些想自定义错误输出场景的人,pretty_errors 会是一个不错的解决方案。