Я пытаюсь запустить python script из cron, но он не работает должным образом, поэтому я предполагаю его переменную переменной env. Есть ли способ изменить переменную в python script?
Как изменить переменную системного пути в python script?
Ответ 1
Вам не нужно устанавливать PATH из python script. Вместо этого поставьте что-то вроде
USER=joe
HOME=/home/joe
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/some/other/path
PYTHONPATH=/home/joe/pybin
MAILTO=joe
LANG=en_US.UTF-8
#min hr day mon dow
*/5 12 * * * reminder.py 'Eat lunch'
вверху вашего кронтаба. Эти переменные среды будут доступны для всех заданий cron, проходящих через ваш crontab.
Ответ 2
@ubuntu имеет правильный подход, но для чего это стоит @Joe Schmoe, если вам когда-нибудь понадобится информация:
import sys
print sys.path
['.', '/usr/local/bin', '/usr/local/lib/python2.6/dist-packages',...]
sys.path.append('/home/JoeBlow/python_scripts')
print sys.path
['.', '/usr/local/bin', '/usr/local/lib/python2.6/dist-packages', '/home/JoeBlow/python_scripts',...]
sys.path - это массив, содержащий все, что было в вашей инициализирующей переменной script PYTHONPATH (или независимо от вашего PYTHONPATH вашей оболочки по умолчанию).
Ответ 3
В то время как принятый ответ работает для целей OP, и хотя второй ответ правильный для обновления переменной sys.path python, я думаю, если бы OP не смогли использовать принятый ответ (потому что, скажем, там была политикой против изменения переменной ОС PATH на машинах для сборки/тестирования), что-то вроде this SO answer будет тем, что они ищут. Суммируя здесь простой случай, изменим переменную среды PATH ОС:
app_path = os.path.join(root_path, 'other', 'dir', 'to', 'app')
os.environ["PATH"] += os.pathsep + app_path
По крайней мере, это то, что я надеялся найти, когда прочитал вопрос.