2017-02-15 107 views
0

我正在創建需要運行python腳本的PHP應用程序。我必須使用virtualenv。在項目目錄中,我創建了env目錄,並在裏面創建了名爲python的虛擬env。在另一個目錄中,我已經把劇本我想運行,這個bash腳本:Bash腳本在virtualenv中運行python腳本

#!/bin/bash 

app="$(pwd)/../" 
pythonEnv="${app}env/python/" 
source ${pythonEnv}"bin/activate" 
"${pythonEnv}bin/python" "${app}scripts/script.py arg1 arg2" 

但是當我運行該腳本(使用終端到目前爲止)我得到這個錯誤:

/var/www/project/scripts/../env/python/bin/python: can't open file '/var/www/project/scripts/../scripts/script.py arg1 arg2': [Errno 2] No such file or directory 

當然腳本目錄中有script.py,並具有正確的訪問權限:

-rwxrwxr-x 

我在做什麼錯?

+1

檢查目錄。我認爲目錄不正確..檢查你的腳本放在哪裏。 – orvi

+0

@orvi我從錯誤複製路徑,它的工作,所以目錄是正確的 – Robin71

回答

2

讀取您的錯誤消息,看起來解釋器認爲該文件是/var/www/project/scripts/../scripts/script.py arg1 arg2而不是簡單地/var/www/project/scripts/../scripts/script.py。您應該從文件名中分離出arg1arg2

此外,我認爲只要激活了虛擬環境,您就可以編寫python而不是"${pythonEnv}bin/python"

2

由於您的報價,您正在嘗試撥打"${app}scripts/script.py arg1 arg2"作爲腳本名稱 - 該名稱不存在。您可以更改您的腳本以解決此問題:

${pythonEnv}bin/python ${app}scripts/script.py arg1 arg2 

根據需要調整引用,但要保持特定的引用。例如,如果您需要引用您的pythonEnv變量do "${pythonEnv}"