Как задать переменную окружения в 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

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
Наши условия использования и конфиденциальности

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