我有一个 bash 脚本,它调用 ImageMagick 中的“convert”命令。当我在终端中手动执行该脚本时,该脚本运行良好。显然,我已将“转换”命令的路径添加到我的系统路径中。当我尝试使用另一个脚本(用 python 编写)执行它时,我遇到了错误,找不到“转换”。这是一个重现该问题的简单示例。我使用的是 OSX Maverick。
Shell 脚本:convert_svg_to_png.sh
#!/bin/bash
for filename in *.svg; do
convert "$filename" "`basename $filename .svg`.png"
done
Python 脚本:runme.py
import subprocess
subprocess.call('./convert_svg_to_png.sh')
错误: ./convert_svg_to_png.sh:第 5 行:转换:找不到命令
知道为什么会出现这个错误吗?
编辑:修改 bash 脚本以包含转换函数的完整路径时。弹出这个新错误:
dyld:未加载库:/ImageMagick-6.8.9/lib/libMagickCore-6.Q16.2.dylib 引用自:%FullPath%convert 原因:找不到图片
python 调用的 shell 是/bin/bash。与我的终端相同。
最佳答案
一些事情...
确保您的
$PATH
环境变量可以访问convert
实用程序。export PATH="${PATH}:/Users/myusername/Desktop/libraries/ImageMagick-6.8.9/bin"
如果ImageMagick的生态系统位于一个特殊的地方,请设置环境
$MAGICK_HOME
;这样,运行时库就可以找到所有内容。export MAGICK_HOME=/Users/myusername/Desktop/libraries/ImageMagick-6.8.9
调用
subprocess.call
时,设置关键字参数shell=True
。import subprocess subprocess.call('./convert_svg_to_png.sh', shell=True)
关于Python 脚本使用 Image Magick 调用 shell 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32193369/