sh:转换:在 spyder 上找不到命令
Posted
技术标签:
【中文标题】sh:转换:在 spyder 上找不到命令【英文标题】:sh: convert: command not found on spyder 【发布时间】:2020-05-24 11:37:43 【问题描述】:我正在研究 spyder(python 2.7),我得到了这个 (My code)。你能解释一下是什么问题吗?
谢谢!
抱歉,这里是代码
import numpy as np
import pylab as plt
import os
g = 10
v_o = 10
alph = np.pi/4
N_fram = 20
t_i = 0
t_f = 1.4
t_pas = (t_f - t_i)/N_fram
X_min, X_max, Y_min, Y_max = 0, 12, 0, 3
for n in range(N_fram):
t = t_i + n*t_pas
y = -(1/2)*g*t**2 + v_o*np.sin(alph)*t
x = v_o*np.cos(alph)*t
plt.plot(x, y, 'o', color = 'b')
if n == (N_fram-1):
plt.text(6, 2, "Boom !", fontsize=20)
plt.axis([X_min, X_max, Y_min, Y_max])
filename = 'fichierTemp'+str('%02d' %n)+'.pdf'
plt.savefig(filename)
print('Nplot=', n)
plt.clf()
cmd = 'convert -delay 50 -loop 0 fichierTemp*.pdf TrajectoireBoulet.gif'
os.system(cmd)
os.system('rm fichierTemp*.pdf')
print("C'est fini !")
这是一个 gif (TrajectoireBoulet.gif),但在我的 Mac 上,它只是一个照片组(this)
而且,当我在终端中写“convert”时,我得到了:
Copyright: © 1999-2020 ImageMagick Studio LLC
License: https://imagemagick.org/script/license.php
Features: Cipher DPC HDRI
Delegates (built-in): bzlib cairo fftw fontconfig freetype gvc jbig jng
jp2 jpeg lzma pangocairo png rsvg tiff webp xml zlib
Usage: convert [options ...] file [ [options ...] file ...] [options...] file
【问题讨论】:
请不要发代码图片,它们很难运行。 哦,您在 Mac 上使用 Preview 查看 GIF。那是行不通的。启动 Finder 并导航到包含 GIF 的文件夹。用鼠标短暂点击一次,然后按空格键,它将在 Quicklook 中正确动画。 关于输入convert
,您需要添加与代码中相同的所有其他参数convert -delay 80 -loop 0 *.png animated.gif
或者,如果您启动 Safari 并转到 文件 和 打开 菜单选项,则可以使用 Safari 查看动画 GIF。
好的,很好。非常感谢
【参考方案1】:
尝试包含convert
的完整路径,例如/usr/local/bin/convert ...
您可以通过在终端中运行它来找到它:
type convert
另外,PDF 不是动画单个帧的最佳选择,因为 ImageMagick 需要外部 Ghostscript 程序才能读取它们,所以我建议您使用 PNG
文件作为中间格式如下:
#!/usr/bin/env python3
import numpy as np
import pylab as plt
import os
g = 10
v_o = 10
alph = np.pi/4
N_fram = 20
t_i = 0
t_f = 1.4
t_pas = (t_f - t_i)/N_fram
X_min, X_max, Y_min, Y_max = 0, 12, 0, 3
for n in range(N_fram):
t = t_i + n*t_pas
y = -(1/2)*g*t**2 + v_o*np.sin(alph)*t
x = v_o*np.cos(alph)*t
plt.plot(x, y, 'o', color = 'b')
if n == (N_fram-1):
plt.text(6, 2, "Boom !", fontsize=20)
plt.axis([X_min, X_max, Y_min, Y_max])
filename = 'fichierTemp'+str('%02d' %n)+'.png'
plt.savefig(filename)
print('Nplot=', n)
plt.clf()
cmd = '/full/path/to/convert -delay 50 -loop 0 fichierTemp*.png TrajectoireBoulet.gif'
os.system(cmd)
#os.system('rm fichierTemp*.pdf')
print("C'est fini !")
【讨论】:
我用完整路径替换了“convert”,现在我得到了“convert: no images defined `TrajectoireBoulet.gif' @ error/convert.c/ConvertImageCommand/3273。” 好的,我知道了。您正在使用星号 (*
) 来枚举文件,而 shell 通常会为您执行此操作。我不在电脑前检查,但我认为您要么需要将 Python 的 subprocess.run()
与 shell 一起使用,要么使用 'fichiertmp*.pdf'
并希望 ImageMagick 会为您扩展通配符。
感谢您的回答,但我是 python 新手,不明白如何使用 subprocess.run()。老实说,这是我老师的代码,我试图理解它是如何工作的。
试试cmd="/path/to/convert -delay 50 -loop 0 'fichierTemp*.pdf' Trajectoire.gif"
我得到“转换:没有定义图像 `Trajectoire.gif' @error/convert.c/ConvertImageCommand/3273。”以上是关于sh:转换:在 spyder 上找不到命令的主要内容,如果未能解决你的问题,请参考以下文章