2017-02-15 67 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}"