Как изменить системную переменную пути в скрипте Python? - PullRequest
7 голосов
/ 02 ноября 2010

Я пытаюсь запустить скрипт python из cron, но он не работает должным образом, поэтому я предполагаю, что это другая переменная path env.Есть ли способ изменить переменную в скрипте Python?

Ответы [ 3 ]

25 голосов
/ 15 декабря 2016

Хотя принятый ответ работает для целей OP, и хотя второй ответ корректен для обновления переменной python sys.path, я думаю, если OP не смог использовать принятый ответ (потому что, скажем,была политика против изменения переменной OS PATH на машинах сборки / тестирования), что-то вроде этот SO-ответ был бы тем, что они искали.Подводя итог простому случаю, изменим переменную среды OS PATH:

app_path = os.path.join(root_path, 'other', 'dir', 'to', 'app')
os.environ["PATH"] += os.pathsep + app_path

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

10 голосов
/ 02 ноября 2010

@ 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 - это массив, содержащий все, что было в переменной PYTHONPATH вашего исходного скрипта (или какова бы ни была PYTHONPATH вашей оболочки по умолчанию).

4 голосов
/ 02 ноября 2010

Вам не нужно устанавливать PATH из скрипта Python. Вместо этого поставьте что-то вроде

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'

вверху вашего crontab. Эти переменные среды будут доступны для всех заданий cron, выполняемых через ваш crontab.

...