Bash 脚本到 运行 python virtualenv 中的脚本
Bash script to run python script in virtualenv
我正在创建 PHP 需要 运行 python 脚本的应用程序。我必须使用 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
当然在scripts目录下有script.py并且有正确的访问权限:
-rwxrwxr-x
我做错了什么?
阅读您的错误消息,解释器似乎认为该文件是 /var/www/project/scripts/../scripts/script.py arg1 arg2
而不仅仅是 /var/www/project/scripts/../scripts/script.py
。您应该将 arg1
和 arg2
与文件名分开。
此外,我认为您可以在激活虚拟环境后只写 python
而不是 "${pythonEnv}bin/python"
。
由于您的引用,您正试图调用 "${app}scripts/script.py arg1 arg2"
作为脚本名称 - 它不存在。您可以更改脚本来修复它:
${pythonEnv}bin/python ${app}scripts/script.py arg1 arg2
根据需要调整您的报价,但要保持具体。例如,如果您需要引用 pythonEnv
变量,请执行 "${pythonEnv}"
.
我正在创建 PHP 需要 运行 python 脚本的应用程序。我必须使用 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
当然在scripts目录下有script.py并且有正确的访问权限:
-rwxrwxr-x
我做错了什么?
阅读您的错误消息,解释器似乎认为该文件是 /var/www/project/scripts/../scripts/script.py arg1 arg2
而不仅仅是 /var/www/project/scripts/../scripts/script.py
。您应该将 arg1
和 arg2
与文件名分开。
此外,我认为您可以在激活虚拟环境后只写 python
而不是 "${pythonEnv}bin/python"
。
由于您的引用,您正试图调用 "${app}scripts/script.py arg1 arg2"
作为脚本名称 - 它不存在。您可以更改脚本来修复它:
${pythonEnv}bin/python ${app}scripts/script.py arg1 arg2
根据需要调整您的报价,但要保持具体。例如,如果您需要引用 pythonEnv
变量,请执行 "${pythonEnv}"
.