Сообщить об ошибке.

Переменные среды окружения системы (environment)

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

Содержание:


os.environ:

Переменная os.environ это объект сопоставления, подобный словарю, который представляет переменные среды окружения системы. Например, os.environ['HOME'] это путь к домашнему каталогу на некоторых платформах и эквивалентен getenv("HOME") в языке C.

Переменная os.environ фиксируется при первом импорте модуля os, во время запуска Python. Изменения в среде OS, сделанные после этого времени, не отражаются os.environ, за исключением изменений, внесенных путем непосредственного изменения os.environ.

Если платформа поддерживает функцию os.putenv(), то сопоставление os.environ может использовать ее для изменения среды. Функция os.putenv() будет вызываться автоматически при изменении os.environ.

Если платформа не поддерживает функцию os.putenv(), то измененная копия сопоставления os.environ может быть передана соответствующим функциям создания процессов, чтобы заставить дочерние процессы использовать измененную среду.

В Unix ключи и значения используют sys.getfilesystemencoding() и обработчик ошибок 'surrogateescape'. Если вы хотите использовать другую кодировку, то используйте os.environb.

Заметка:

  • Вызов os.putenv(), напрямую не изменят os.environ, поэтому лучше менять значения ключей os.environ.
  • На некоторых платформах, включая FreeBSD и Mac OS X, настройка os.environ может вызвать утечки памяти.

Если платформа поддерживает функцию os.unsetenv(), то с ее помощью можно удалить элементы в этом отображении os.environ для сброса указанной переменной среды. Функция os.unsetenv() будет вызываться автоматически при удалении элемента из os.environ и при вызове одного из методов .pop() или .clear().

>>> import os
>>> os.environ['LANG']
# 'ru_RU.UTF-8'
>>> os.environ['HOME']
# '/home/docs-python'
>>> os.environ['HOME'] = '/tmp'
>>> os.environ.pop('HOME')
# '/tmp'
>>> os.environ.get('HOME', '/var/www')
# '/var/www'

# очистка среды окружения
os.environ.clear()
os.environ
# environ({})

os.supports_bytes_environ:

os.supports_bytes_environ производит проверку доступности функций модуля os.environb и os.getenvb(). Эти функции доступны только в том случае, если os.support_bytes_environ равно True. os.support_bytes_environ истинно, если родной тип среды ОС - байты, например False в Windows.

os.environb:

Байт-версия переменных сред окружения: представляет собой объект отображения, подобный словарю который представляет переменные среды окружения в виде байтовых строк. Environment и environmentb синхронизируются, изменяются обновления среды, и наоборот.

Окружение доступно только в том случае, если os.support_bytes_environ равно True.

os.getenv(key, default=None):

Функция os.getenv() возвращает значение ключа key переменной среды, если оно существует или значение по умолчанию default, если его нет. Значения key, default и возвращаемый результат - строки str.

В Unix ключи и значения декодируются с помощью sys.getfilesystemencoding() и обработчик ошибок 'surrogateescape'. Используйте функцию os.getenvb(), если хотите использовать другую кодировку.

Доступность: большинство систем Unix, Windows.

>>> import os
>>> os.environ['HOME']
# '/home/docs-python'
>>> os.getenv('TEST_ENV', '/tmp')
# '/tmp'

os.getenvb(key, default=None):

Функция os.getenvb() возвращает значение ключа key переменной среды, если оно существует или значение по умолчанию default, если его нет. Значения key, default и возвращаемый результат - байтовые строки bytes.

Функция os.getenvb() доступна только в том случае, если os.support_bytes_environ равно True.

Доступность: большинство Unix.

os.putenv(key, value):

Функция os.putenv() устанавливает переменную среды с именем key в строковое значение value. Такие изменения в переменной среде влияют на подпроцессы, запущенные с os.system(), os.popen() или os.fork() и os.execv().

Примечание. На некоторых платформах, включая FreeBSD и Mac OS X, настройка среды может привести к утечке памяти.

Важно. Если функция os.putenv() поддерживается системой, то изменения для элементов в os.environ автоматически переводятся в соответствующие вызовы os.putenv(), однако самостоятельные вызовы os.putenv() не обновляют значения в словаре os.environ, поэтому предпочтительнее присваивать значения переменных сред элементам os.environ.

Функция os.putenv() вызывает событие аудита os.putenv с аргументами key, value.

Изменено в Python 3.9: Функция теперь всегда доступна.

os.unsetenv(key):

Функция os.unsetenv() вызывает сброс (удаление) переменной среды окружения с именем key. Такие изменения в переменной среде влияют на подпроцессы, запущенные с os.system(), os.popen() или os.fork() и os.execv().

Важно. Если функция os.unsetenv() поддерживается системой, удаление элементов в os.environ автоматически переводится в соответствующий вызов os.unsetenv(), однако самостоятельные вызовы os.unsetenv() не обновляют словарь os.environ, поэтому удалять элементы в самом словаре os.environ.

Функция os.unsetenv() вызывает событие аудита os.unsetenv с аргументом key.

Изменено в Python 3.9: теперь эта функция доступна всегда, а также доступна в Windows.

os.get_exec_path(env=None):

Функция os.get_exec_path() возвращает список каталогов, в которых будет выполняться поиск исполняемого файла, аналогичного оболочке, например bash, при запуске процесса. Аргумент env, если он указан, должен быть словарем переменных среды для поиска в PATH. По умолчанию, когда env имеет значение None, используется Environment системы.

>>> os.get_exec_path()
# ['/home/docs-python/.local/bin', '/usr/local/sbin', 
# '/usr/local/bin', '/usr/sbin', '/usr/bin', '/sbin',
# '/bin', '/usr/games', '/usr/local/games', '/snap/bin']

>>> os.get_exec_path({'PATH':'/usr/local/bin:/usr/sbin:/usr/bin:/sbin'})
# ['/usr/local/bin', '/usr/sbin', '/usr/bin', '/sbin']