在Linux终端运行Python代码显示PNG图片时出现NameError问题求助
解决Linux终端中Python调用
display()报错的问题 display()是Jupyter Notebook/Lab环境的内置函数,普通Linux终端没有这个函数,所以会抛出NameError。下面是几种适合终端环境的图片显示方案:
方案1:使用PIL自带的show()方法
PIL的Image对象自带show()方法,它会调用系统默认的图片查看器(比如Eye of GNOME、gwenview等)打开图片,无需额外依赖(前提是系统已安装图片查看器)。
修改后的代码:
from PIL import Image im = Image.open("/content/sample_1.png") im.show()
如果运行后提示找不到查看器,Ubuntu/Debian系统可以安装默认查看器:
sudo apt install eog # Eye of GNOME,GNOME桌面默认查看器 # 或者安装imagemagick(兼容更多格式) sudo apt install imagemagick
方案2:使用matplotlib库显示
如果需要在脚本中直接显示图片(依赖图形环境),可以用matplotlib:
首先安装matplotlib:
pip install matplotlib
修改后的代码:
from PIL import Image import matplotlib.pyplot as plt im = Image.open("/content/sample_1.png") plt.imshow(im) plt.axis('off') # 隐藏坐标轴 plt.show()
注意:如果是无图形界面的远程服务器,需要配置X11转发(终端连接时加-X参数),或者设置matplotlib后端为非交互式(比如plt.switch_backend('Agg'),但这样只会保存图片而不显示)。
方案3:文本模式显示ASCII艺术图(纯终端无图形环境)
如果你的终端没有图形环境,可以将图片转换成ASCII艺术图显示,需要用到第三方库ascii_magic:
安装库:
pip install ascii_magic
代码示例:
from PIL import Image import ascii_magic im = Image.open("/content/sample_1.png") ascii_magic.to_terminal(im)
这样会在终端里以ASCII字符的形式展示图片轮廓。
内容的提问来源于stack exchange,提问作者Sania
相关产品推荐
相关产品推荐

