Python 脚本使用 Image Magick 调用 shell 脚本

标签 python bash imagemagick subprocess imagemagick-convert

我有一个 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。与我的终端相同。

最佳答案

一些事情...

  1. 确保您的 $PATH 环境变量可以访问 convert 实用程序。

    export PATH="${PATH}:/Users/myusername/Desktop/libraries/ImageMagick-6.8.9/bin"
    
  2. 如果ImageMagick的生态系统位于一个特殊的地方,请设置环境$MAGICK_HOME;这样,运行时库就可以找到所有内容。

    export MAGICK_HOME=/Users/myusername/Desktop/libraries/ImageMagick-6.8.9
    
  3. 调用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/

相关文章:

android - Magick++ 的格式库依赖项

PHP:使用 ImageMagick 将 alpha channel 转换为白色背景

python - 假设如果 end_time 低于 start_time,则 pandas 会得到 2 倍的差异,则为第二天

python - pynput 事件执行两次

python - 在 python 中绘制 YoY 价格相关性。 (绘制 Dataframe 行的相关性)

linux - 期望脚本自动 FTP 上传正在将损坏的文件发送到服务器

python - 在 Python 中处理 HTML 以删除和关闭打开标签

linux - 将文件夹/目录添加到 linux 中的路径的 Bash 脚本不起作用

linux - 为什么 shell 中的文件名后面要加上\n?

imagemagick - 在 2x2 网格中蒙太奇 3 个图像,首先在顶部中心(如 "triforce")?