用于在virtualenv中运行python脚本的Bash脚本

时间:2017-02-15 18:27:24

标签: python linux bash virtualenv

我正在创建需要运行python脚本的PHP应用程序。我必须使用virtualenv。在项目目录中,我创建了env目录,并在内部创建了名为python的虚拟环境。在另一个目录中我已经把脚本我想运行这个bash脚本:

#!/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

我做错了什么?

2 个答案:

答案 0 :(得分:3)

阅读您的错误消息,似乎解释器认为该文件是/var/www/project/scripts/../scripts/script.py arg1 arg2而不仅仅是/var/www/project/scripts/../scripts/script.py。您应该从文件名中分隔arg1arg2

此外,我认为您可以在激活虚拟环境后编写python而不是"${pythonEnv}bin/python"

答案 1 :(得分:2)

由于您的引用,您尝试将"${app}scripts/script.py arg1 arg2"作为脚本名称调用 - 该名称不存在。您可以更改脚本以进行修复:

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

根据需要调整引用,但要具体说明。例如,如果您需要引用pythonEnv变量,请{。{1}}。