2016-07-15 6 views
0

У меня возникли проблемы с запуском моего скрипта python на общем хостинге (bluehost), а с помощью других потоков SO я смог установить PYTHONPATH и запустить скрипт без проблем.Установите PYTHONPATH для заданий cron на общем хостинге

Теперь мне нужно запустить скрипт через задание cron. Задачи cron в среде совместного размещения - это всего лишь одна строка, которую я могу назвать сценарием, но не могу понять, как установить PYTHONPATH перед вызовом сценария.

Пример:

python /path/to/my/script.py 

Я уверен, что этот вопрос должен быть общим, но я не мог найти ответ в других потоках.

Любая идея, как установить PYTHONPATH для работы cron?

Также кодовая база разработана в локальной среде, и сервер получает копию через git pull. Поэтому мое предпочтительное решение - не изменять исходный код для сервера. Это нормально, чтобы вызвать другой скрипт из задания cron, который вызывает основной скрипт и устанавливает там переменные, но изменение основного сценария я предпочитаю не выполнять, так что мне не нужно поддерживать две версии кода один для локального и один для сервер.

ответ

5

Измените задание cron, чтобы запустить сценарий оболочки. Внутри сценария оболочки установите PYTHONPATH, а затем вызовите программу python.

Изменить хрон к этому:

/path/to/my_shell_script.sh 

Содержание my_shell_script.sh:

export PYTHONPATH=something 
python /path/to/py/python/program.py 

Если вы не хотите иметь отдельный скрипт, вы можете впихнуть все это в хрон но может быть очень длинным:

PYTHONPATH=something python /path/to/py/python/program.py 
+0

может также установить эту переменную непосредственно в файле crontab, и она получит вводится в среду, с которой выполняется задание. – reptilicus

+0

@reptilicus с общим хостингом у нас все еще есть доступ к файлу crontab? Прямо сейчас все, что я вижу, это создать однострочные кроны из cpanel. – apadana