【问题标题】:Command not found error while trying to run imagemagick from within IDLE尝试从 IDLE 中运行 imagemagick 时未找到命令错误
【发布时间】:2021-09-24 19:10:45
【问题描述】:

我想通过 Python 做一些 ImageMagick 的事情,我在我的 Mac OS 上安装了 ImageMagick。当我从 Python IDLE 中运行我的代码时,它给了我/bin/sh: magick: command not found 错误,而通过终端运行相同的程序工作正常。例如,当我从终端像sh-3.2$ python3 imageMagicProblems.py 一样运行它时,没有问题。

有人可以帮助我理解为什么在通过 Python IDLE 运行时会出现问题吗?另见附件screenshot

这是我的代码:

import subprocess

args = "magick -version"
p = subprocess.Popen(args, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
(out, err) = p.communicate()
print (out.decode('utf-8').rstrip())
print (err.decode('utf-8').rstrip())

【问题讨论】:

标签: python macos subprocess imagemagick python-idle


【解决方案1】:

问题在于您的环境不同,特别是您的PATH。为了找到magick 命令的完整路径,请进入magick 工作的普通终端并运行:

type magick

它会告诉你类似的信息:

magick is
/usr/local/bin/magick

现在在您的 Python subprocess 命令中,使用您找到的相同完整路径,例如

args = '/usr/local/bin/magick -version'

【讨论】:

  • 谢谢。它有效,但我仍然不明白它造成的差异。当我说shell = True 时,它不应该使用与我直接通过终端运行它相同的路径工作吗?如果我将 shell 切换到 /bin/sh/bin/bash 并说“魔术”,它就可以工作。
猜你喜欢
  • 2016-04-04
  • 1970-01-01
  • 2018-09-14
  • 1970-01-01
  • 2019-07-29
  • 2012-06-06
  • 2022-01-11
  • 2012-02-08
  • 2020-02-13
相关资源
最近更新 更多