Перейти к содержимому

Как создать переменную среды окружения python

  • автор:

Как задать переменную окружения в Python

Мне нужно задать переменные окружения в python скрипте. Я хочу, чтобы все другие скрипты, вызываемые из python (shell-скрипты), которые будут дочерними процессами, видели набор переменных окружения. Значение — это число. Когда я объявляю переменную вот так

os.environ ["DEBUSSY"] = 1 

Происходит ошибка

TypeError: str expected, not int 

Получается, что единица, должна быть строкой. Я также хочу узнать, как читать переменные окружения в python (в более поздней части скрипта) после ее объявления. Согласно правилам, решил перевести вопрос со stackoverflow.com

  • python
  • environment-variables

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

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

Содержание:

  • Переменная os.environ ,
  • Функция os.supports_bytes_environ ,
  • Переменная os.environb ,
  • Функция os.getenv() ,
  • Функция os.getenvb() ,
  • Функция os.putenv() ,
  • Функция os.unsetenv() ,
  • Функция os.get_exec_path() .
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'] 
  • ОБЗОРНАЯ СТРАНИЦА РАЗДЕЛА
  • Управление переменной средой окружения системы
  • Представление пути в файловой системе
  • Извлечение/установка uid, gid и pid процесса
  • Наследование файловых дескрипторов
  • Создание дескриптора файла, чтение, запись и его закрытие
  • Функция listdir() модуля os
  • Функция walk() модуля os
  • Функция scandir() модуля os
  • Объект DirEntry() модуля os
  • Функция stat() модуля os
  • Объект stat_result, результаты выполнения os.stat()
  • Функция lstat() модуля os
  • Функция access() модуля os
  • Функция chdir() модуля os
  • Функция chmod() модуля os
  • Функция chown() модуля os
  • Функция chroot() модуля os
  • Функция getcwd() модуля os
  • Функция link() модуля os
  • Функция mkdir() модуля os
  • Функция makedirs() модуля os
  • Функция symlink() модуля os
  • Функция readlink() модуля os
  • Функция remove() модуля os, удалить файл
  • Функция removedirs() модуля os
  • Функция rename() модуля os
  • Функция renames() модуля os
  • Функция replace() модуля os
  • Функция rmdir() модуля os
  • Функция strerror() модуля os
  • Функция supports_dir_fd модуля os
  • Функция supports_effective_ids модуля os
  • Функция supports_fd модуля os
  • Функция supports_follow_symlinks модуля os
  • Функция truncate() модуля os
  • Функция utime() модуля os
  • Манипулирование списком контроля доступа ACL в Linux
  • Функция abort() модуля os
  • Функция exec*() модуля os
  • Функция popen() модуля os
  • Функция system() модуля os
  • Функция _exit() модуля os
  • Функция fork() модуля os
  • Функция kill() модуля os
  • Функции spawn*() модуля os
  • Функция umask() модуля os
  • Функция uname() модуля os
  • Функция wait() модуля os
  • Функция waitpid() модуля os
  • Определение состояния процесса
  • Константы для поддержки операций с путями
  • Генератор случайных байтов на основе модуля os
  • Функция startfile() модуля os
  • Функция times() модуля os
  • Функции getloadavg() и cpu_count() модуля os
  • Функция waitstatus_to_exitcode() модуля os
  • Функция listdrives() модуля os, имена дисков Windows
  • Функция listmounts() модуля os, точки монтирования Windows
  • Функция listvolumes() модуля os, список томов Windows

Переменные окружения .env в приложениях Python

Переменные окружения .env в приложениях Python

python-dotenv — это небольшой пакет, который считывает пары ключ-значение из файла .env , и загружает необходимые вашему приложению переменные среды.

Чтобы начать использовать dotenv в своем проекте, установите его командой:

pip install python-dotenv

В каталоге вашего проекта создайте файл .env , и пропишите в него переменные.

# .env файл TOKEN = "AQAAAAAz55vbAAdBSHeydEoSe0fclxSSABT" DOMAIN = "ramziv.com"

Откройте файл в котором вы хотите его использовать, к примеру setting.py и загрузите переменные используя метод load_dotenv() .

import os from dotenv import load_dotenv load_dotenv() TOKEN = os.getenv("TOKEN") DOMAIN = os.getenv("DOMAIN") print(TOKEN) #AQAAAAAz55vbAAdBSHeydEoSe0fclxSSABT print(DOMAIN) #ramziv.com

Вы так же можете загрузить переменные как словарь.

from dotenv import dotenv_values config = dotenv_values() print(config) #OrderedDict([('TOKEN', 'AQAAAAAz55vbAAdBSHeydEoSe0fclxSSABT'), ('DOMAIN', 'ramziv.com')]) print(config['DOMAIN']) #ramziv.com

И создать несколько экземпляров файла, для production .env.prod и development .env.dev .

from dotenv import dotenv_values config_dev = dotenv_values(".env.dev") config_prod = dotenv_values(".env.prod") print(config_dev['DOMAIN']) #localhost print(config_prod['DOMAIN']) #ramziv.com

Не забудьте исключить этот файл из в системе управления версиями.

Как создать переменную среды окружения python

Скачай курс
в приложении

Перейти в приложение
Открыть мобильную версию сайта

© 2013 — 2024. Stepik

Наши условия использования и конфиденциальности

Get it on Google Play

Public user contributions licensed under cc-wiki license with attribution required

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *