0

当我使用 passthru() 通过 PHP 调用 python 脚本(使用子进程和管道)时出现错误。

这是错误:

Traceback(最近一次调用最后一次):文件“…/Desktop/h.py”,第 11 行,在 stdout=subprocess.PIPE)#设置转换命令并将输出定向到管道文件“/System/Library/Frameworks /Python.framework/Versions/2.5/lib/python2.5/subprocess.py”,第 593 行,在init errread, errwrite) 文件“/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2. 5/subprocess.py",第 1079 行,在 _execute_child raise child_exception OSError: [Errno 2] No such file or directory

PHP 通道:

<?php
passthru("/usr/bin/python2.5 /Users/Nagar/Desktop/h.py $argument1 $argument2 1 2>&1");
?>

我的 Python 行导致错误:

p1 = subprocess.Popen(['convert', fileIn, 'pnm:-'], stdout=subprocess.PIPE) #set up the convert command and direct the output to a pipe

如何在子进程中正确使用 stdout=subprocess.PIPE?

期待您的回答。

4

2 回答 2

1

这是因为它需要通过shell执行,所以需要将shell参数设置为True:

p1 = subprocess.Popen(['convert', fileIn, 'pnm:-'], stdout=subprocess.PIPE, shell=True)convert command and direct the output to a pipe
于 2012-06-20T08:38:31.680 回答
0

看起来您的 PATH 没有包含“转换”命令的目录。尝试更换:

p1 = subprocess.Popen(['convert', fileIn, 'pnm:-'], stdout=subprocess.PIPE)

和:

p1 = subprocess.Popen(['/full/path/to/convert', fileIn, 'pnm:-'], stdout=subprocess.PIPE)

其中“/full/path/to/convert”可能类似于“/usr/bin/convert”。

于 2012-03-20T16:21:17.857 回答