Python <`没有这样的文件或目录:'gs'> 错误 *更新*
Python <`No such file or directory: 'gs'> error *UPDATE*
我在我的程序中实现了以下 save
函数,它允许用户将 he/she 在 Tkinter canvas 上使用 Turtle 绘制的任何内容保存为 JPEG 文件。它应该是如何工作的,它首先捕获屏幕和 Tkinter canvas,然后基于它创建一个 postscript 文件。然后它将 postscript 文件转换为 PIL(Python 成像库)可读文件类型,然后 PIL 将转换后的文件保存为 JPEG。我的保存功能如下图:
def savefirst():
# Capture screen and Tkinter canvas
cnv = getscreen().getcanvas()
global hen
# Save screen and canvas as Postscript file
ps = cnv.postscript(colormode = 'color')
# Open a Tkinter file dialog that allows to input his.her own name for the file
hen = filedialog.asksaveasfilename(defaultextension = '.jpg')
# Convert Postscript file to PIL readable format
im = Image.open(io.BytesIO(ps.encode('utf-8')))
# Finally save converted file as a JPEG
im.save(hen + '.jpg')
但是,每当我 运行 这个保存功能时,我都会得到如下所示的错误:
line 2396, in savefirst
im.save(hen + '.jpg')
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/PIL/Image.py", line 1646, in save
self.load()
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/PIL/EpsImagePlugin.py", line 337, in load
self.im = Ghostscript(self.tile, self.size, self.fp, scale)
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/PIL/EpsImagePlugin.py", line 143, in Ghostscript
stdout=subprocess.PIPE)
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/subprocess.py", line 950, in __init__
restore_signals, start_new_session)
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/subprocess.py", line 1544, in _execute_child
raise child_exception_type(errno_num, err_msg)
FileNotFoundError: [Errno 2] No such file or directory: 'gs'
什么是 'gs'
,为什么会发生这种情况,我该如何解决导致此错误的问题?
仅供参考: 以防万一你需要知道,我的操作系统是 Macintosh,我的 Python 版本是 3.5.1
编辑: 显然,正如我所想,'gs'
表示 GhostScript,并且发生该错误是因为我必须安装它(感谢制作的答案我意识到这一点)。我已经从 here、 安装了 .dmg,但我仍然收到错误 。可能跟我现在的OS(MacOS10.11.2)有关系?或者我的保存功能有其他问题?老实说,我不知道。 无论如何,即使我已经(希望)安装了 GhostScript,为什么这个错误仍然出现?再次,非常感谢任何帮助!
PIL 将 PostScript 文件创建委托给 GhostScript,您的系统上没有安装它。安装它。
我在我的程序中实现了以下 save
函数,它允许用户将 he/she 在 Tkinter canvas 上使用 Turtle 绘制的任何内容保存为 JPEG 文件。它应该是如何工作的,它首先捕获屏幕和 Tkinter canvas,然后基于它创建一个 postscript 文件。然后它将 postscript 文件转换为 PIL(Python 成像库)可读文件类型,然后 PIL 将转换后的文件保存为 JPEG。我的保存功能如下图:
def savefirst():
# Capture screen and Tkinter canvas
cnv = getscreen().getcanvas()
global hen
# Save screen and canvas as Postscript file
ps = cnv.postscript(colormode = 'color')
# Open a Tkinter file dialog that allows to input his.her own name for the file
hen = filedialog.asksaveasfilename(defaultextension = '.jpg')
# Convert Postscript file to PIL readable format
im = Image.open(io.BytesIO(ps.encode('utf-8')))
# Finally save converted file as a JPEG
im.save(hen + '.jpg')
但是,每当我 运行 这个保存功能时,我都会得到如下所示的错误:
line 2396, in savefirst
im.save(hen + '.jpg')
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/PIL/Image.py", line 1646, in save
self.load()
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/PIL/EpsImagePlugin.py", line 337, in load
self.im = Ghostscript(self.tile, self.size, self.fp, scale)
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/PIL/EpsImagePlugin.py", line 143, in Ghostscript
stdout=subprocess.PIPE)
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/subprocess.py", line 950, in __init__
restore_signals, start_new_session)
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/subprocess.py", line 1544, in _execute_child
raise child_exception_type(errno_num, err_msg)
FileNotFoundError: [Errno 2] No such file or directory: 'gs'
什么是 'gs'
,为什么会发生这种情况,我该如何解决导致此错误的问题?
仅供参考: 以防万一你需要知道,我的操作系统是 Macintosh,我的 Python 版本是 3.5.1
编辑: 显然,正如我所想,'gs'
表示 GhostScript,并且发生该错误是因为我必须安装它(感谢制作的答案我意识到这一点)。我已经从 here、 安装了 .dmg,但我仍然收到错误 。可能跟我现在的OS(MacOS10.11.2)有关系?或者我的保存功能有其他问题?老实说,我不知道。 无论如何,即使我已经(希望)安装了 GhostScript,为什么这个错误仍然出现?再次,非常感谢任何帮助!
PIL 将 PostScript 文件创建委托给 GhostScript,您的系统上没有安装它。安装它。