os.environ () выдаёт ошибки при настройке для Hudson - PullRequest
2 голосов
/ 16 июня 2010

Я хочу, чтобы небольшой скрипт на python устанавливал переменную среды HUDSON_HOME.

При использовании оболочки я легко могу сделать это, используя >> set HUDSON_HOME = http://localhost:8080

Но как я могу сделать то же самое напрямую через python? Я не хочу делать это, передавая командную строку в os.system () .. Может ли os.environ () помочь? ??

У меня было в моем сценарии: импорт ОС os.environ ( 'HUDSON_HOME') = 'http://localhost:8080'

но он, вероятно, устанавливает его для подпроцесса, а не для родительской оболочки .. каким-то образом? ?? 1011 *

Ответы [ 2 ]

3 голосов
/ 16 июня 2010

os.environ - это словарное представление среды.Вы бы использовали его так:

>>> import os
>>> os.environ['HUDSON_HOME'] = 'http://localhost:8080'

Однако он не может изменить среду родительского процесса AFAIK.

0 голосов
/ 16 июня 2010

Я не знаю ни одного способа сделать это , как вы просили , поскольку изменение среды в вашей программе на Python просто изменит среду для нее и любых дочерних процессов, но не родительского процесса.

Тем не менее, если все, что вам нужно сделать, это иметь какую-нибудь программу на Python, которая вычисляет, каково значение переменной, в зависимости от вашей оболочки, вы должны иметь возможность просто присвоить вывод этой переменнойпеременная окружения:

#!/usr/bin/env python

# code goes here

print 'http://localhost:8080'

Если выше была ваша программа, вы можете запустить ее в оболочке, и для HUDSON_HOME установить значение http://localhost:8080:

$ set HUDSON_HOME=`python program.py`

Примечание. Это обратные пометки,как он знает, что получает результат выполнения команды вместо самой команды.

...