Как изменить переменную системного пути в python script?

Я пытаюсь запустить python script из cron, но он не работает должным образом, поэтому я предполагаю его переменную переменной env. Есть ли способ изменить переменную в 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

По крайней мере, это то, что я надеялся найти, когда прочитал вопрос.