В Python окружение оболочки является простым предустановленным объектом, для обращения к которому не требуется использовать специальный синтаксис. Операция индексирования объекта os.environ строками с именами переменных оболочки (например, os.environ[‘USER’]) является эквивалентом знака доллара перед именем переменной в большинстве оболочек Unix (например, $USER), использования с двух сторон знака процента в DOS (%USER%) и вызова getenv(“USER”) в программе на языке С. Запустим интерактивный сеанс и поэкспериментируем (следующий сеанс выполнялся в Python 3.1 в Windows 7):
>>> import os
>>> os.environ.keys()
KeysView(<os._Environ object at 0x013B8C70>)
>>> list(os.environ.keys())
[‘TMP’, ‘COMPUTERNAME’, ‘USERDOMAIN’, ‘PSMODULEPATH’, ‘COMMONPROGRAMFILES’, …множество строк было удалено…
‘NUMBER_OF_PROCESSORS’, ‘PROCESSOR_LEVEL’, ‘USERPROFILE’, ‘OS’, ‘PUBLIC’, ‘QTJAVA’]
>>> os.environ[‘TEMP’]
‘C:\\Users\\mark\\AppData\\Local\\Temp’
Здесь метод keys возвращает итерируемый объект со списком установленных переменных, а операция индексирования возвращает значение переменной TEMP в Windows. В Linux эти инструкции действуют точно так же, но обычно при запуске Python устанавливаются другие переменные. Поскольку нам знакома переменная PYTHONPATH, посмотрим в Python на ее значение и убедимся в его правильности (когда я писал эти строки, в эту переменную временно был добавлен путь к корневому каталогу с примерами к четвертому изданию книги):
>>> os.environ[‘PYTHONPATH’]
‘C:\\PP4thEd\\Examples;C:\\Users\\Mark\\temp’
>>> for srcdir in os.environ[‘PYTHONPATH’].split(os.pathsep):
… print(srcdir)
C:\PP4thEd\Examples
C:\Users\Mark\temp
>>> import sys
>>> sys.path[:3]
[‘’, ‘C:\\PP4thEd\\Examples’, ‘C:\\Users\\Mark\\temp’]
Переменная PYTHONPATH содержит строку, содержащую список каталогов, разделенных символом, используемым для разделения таких элементов пути на вашей платформе (например, ; в DOS/Windows, : в Unix и Linux). Чтобы разделить эту строку на составляющие, передадим строковому методу split разделитель os.pathsep (переносимая константа, дающая правильный разделитель для соответствующей системы). Как обычно, фактический путь поиска, используемый во время выполнения, хранится в списке sys.path и является объединением пути к текущему рабочему каталогу и содержимого переменной окружения PYTHONPATH.
Использованная литература:
Марк Лутц — Программирование на Python, 4-е издание, I том, 2011