2014-10-11 77 views
0

執行我有一個Python腳本,做這樣的操作:當我從命令行執行腳本python腳本的命令行工作,但不是當它從web應用

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-應用程序,我得到一個錯誤:

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

可能命令tesseract不是默認路徑的一部分。最好在Python腳本中給出tesseract的完整路徑,例如/usr/local/bin/tesseract;還要確保二進制文件可以通過啓動Python腳本的相同進程來執行。

另外,請確保path是從根開始的完全限定路徑。

0

使用

os.chdir() 

或迫使你PROGRAMM絕對pathes工作。

相關問題