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 上找不到命令的主要内容,如果未能解决你的问题,请参考以下文章

在pycharm上找不到Numpy但是在spyder上工作

在 Cygwin 上找不到 sudo 命令

sh Elementary os安装在Macbook上找不到无线网路的解法

在 zsh 上找不到命令 [关闭]

sudo:命令:在 CentOS 6 上找不到命令

安装Anaconda3后,Spyder、Ipython等图标找不到