2017-02-15 3 views
0

Я создаю приложение PHP, которое должно запускать скрипт python. Я должен использовать virtualenv. В каталоге проекта я создал каталог env и внутри созданного виртуального env с именем python. В другом каталоге я уже поставил сценарий я хотел бы работать, и этот Баш скрипт:Bash скрипт для запуска скрипта python в virtualenv

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

Конечно, существует скрипт.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. Вы должны отделить arg1 и arg2 от имени файла.

Кроме того, я думаю, что вы можете просто написать python вместо "${pythonEnv}bin/python" после активации вашей виртуальной среды.

2

Из-за вашего цитирования вы пытаетесь вызвать "${app}scripts/script.py arg1 arg2" как имя сценария - которого не существует. Вы можете изменить сценарий, чтобы исправить его:

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

Откорректируйте свою цитату при необходимости, но сохраните ее. Например, если вам нужно указать вашу переменную pythonEnv, сделайте "${pythonEnv}".

Смежные вопросы