python脚本从命令行工作,但不是从Web应用程序执行时

时间:2014-10-11 10:21:09

标签: python command-line groovy

我有一个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

2 个答案:

答案 0 :(得分:0)

可能命令tesseract不是默认PATH的一部分。最好在Python脚本中提供tesseract的完整路径,例如/usr/local/bin/tesseract;还要确保二进制文件可以通过启动Python脚本的相同进程执行。

此外,请确保path是来自根目录的完全限定路径。

答案 1 :(得分:0)

使用

os.chdir()

或强制您的程序使用绝对路径。

相关问题