我有一个python脚本执行如下操作:
temp = tempfile.NamedTemporaryFile(delete=False)
process = subprocess.Popen(['tesseract', path, temp.name], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
process.communicate()
当我从命令行执行脚本时,这似乎是完美的文件。但是,我需要将我的java web应用程序作为外部进程调用此脚本。我是这样做的:
def command = """ /usr/local/bin/python ${myscript} ${arg1} ${arg2} """
def proc = command.execute()
proc.waitFor()
def procOutput = proc?.in?.text
问题是从we-app运行脚本时出现错误:
File "/Users/anthony/script.py", line 34, in m
process = subprocess.Popen(['tesseract', path, temp.name], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
File "/usr/local/Cellar/python/2.7.3/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 679, in __init__
errread, errwrite)
File "/usr/local/Cellar/python/2.7.3/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 1249, in _execute_child
raise child_exception
OSError: [Errno 2] No such file or directory
答案 0 :(得分:0)
可能命令tesseract
不是默认PATH的一部分。最好在Python脚本中提供tesseract
的完整路径,例如/usr/local/bin/tesseract
;还要确保二进制文件可以通过启动Python脚本的相同进程执行。
此外,请确保path
是来自根目录的完全限定路径。
答案 1 :(得分:0)
使用
os.chdir()
或强制您的程序使用绝对路径。