Error: no “view“ mailcap rules found for type “image/png“

在jupyter中对一个PIL.Image类型的对象img使用img.show(),报错:

Error: no "view" mailcap rules found for type "image/png"

img.show()实际上调用的是PIL.ImageShow.show()
查看PIL.ImageShow源码,发现会根据系统类型将对应的图像浏览器注册到全局变量_viewers中。

当使用Unix系统时,会先注册其他的图像浏览器,最后才注册IPythonViewer,源码如下:

if sys.platform not in ("win32", "darwin"):  # unixoids
    if shutil.which("xdg-open"):
        register(XDGViewer)
    if shutil.which("display"):
        register(DisplayViewer)
    if shutil.which("gm"):
        register(GmDisplayViewer)
    if shutil.which("eog"):
        register(EogViewer)
    if shutil.which("xv"):
        register(XVViewer)

...

try:
    from IPython.display import display as ipython_display
except ImportError:
    pass
else:
    register(IPythonViewer)

报错信息Error: no "view" mailcap rules found for type "image/png"正是xdg-open打开图片时的报错信息。

为了在jupyter中能够正常使用img.show(),可以删掉系统中的xdg-open

sudo apt-get remove xdg-utils

或者更改源码,将register(IPythonViewer)这一行修改为register(IPythonViewer, 0),使IPythonViewer被优先使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值