Я установил переменную среды, к которой я хочу получить доступ в моем приложении Python. Как мне получить его стоимость?

2365
Amit Yadav 5 Фев 2011 в 16:03

10 ответов

Лучший ответ

Доступ к переменным среды осуществляется через os.environ

import os
print(os.environ['HOME'])

Или вы можете увидеть список всех переменных среды, используя:

os.environ

Как иногда вам может понадобиться увидеть полный список!

# using get will return `None` if a key is not present rather than raise a `KeyError`
print(os.environ.get('KEY_THAT_MIGHT_EXIST'))

# os.getenv is equivalent, and can also give a default value instead of `None`
print(os.getenv('KEY_THAT_MIGHT_EXIST', default_value))

Установка Python по умолчанию в Windows - C:\Python. Если вы хотите узнать во время работы python, вы можете сделать:

import sys
print(sys.prefix)
2967
Stevoisiak 27 Фев 2018 в 18:45
import os
for a in os.environ:
    print('Var: ', a, 'Value: ', os.getenv(a))
print("all done")

Это напечатает все переменные окружения вместе с их значениями.

26
erik.weathers 6 Апр 2017 в 08:35

Для получения информации о django (https://github.com/joke2k/django-environ)

$ pip install django-environ

import environ
env = environ.Env(
# set casting, default value
DEBUG=(bool, False)
)
# reading .env file
environ.Env.read_env()

# False if not in os.environ
DEBUG = env('DEBUG')

# Raises django's ImproperlyConfigured exception if SECRET_KEY not in os.environ
SECRET_KEY = env('SECRET_KEY')
3
Leonardo 20 Ноя 2019 в 15:36

Чтобы проверить, существует ли ключ (возвращает True или False)

'HOME' in os.environ

Вы также можете использовать get() при печати ключа; полезно, если вы хотите использовать значение по умолчанию.

print(os.environ.get('HOME', '/home/username/'))

Где /home/username/ по умолчанию

224
Boris 10 Дек 2018 в 02:15

Если вы планируете использовать код в рабочем коде веб-приложения,
используя любой веб-фреймворк, такой как Django / Flask, используйте такие проекты, как envparse, используя его, вы можете прочитать значение как свой определенный тип.

from envparse import env
# will read WHITE_LIST=hello,world,hi to white_list = ["hello", "world", "hi"]
white_list = env.list("WHITE_LIST", default=[]) 
# Perfect for reading boolean
DEBUG = env.bool("DEBUG", default=False)

ПРИМЕЧАНИЕ: autoenv kennethreitz - рекомендуемый инструмент для создания переменных среды, специфичных для проекта, обратите внимание, что те, кто использует { {X0}}, пожалуйста, держите файл .env закрытым (недоступным для общественности)

18
Renjith Thankachan 5 Апр 2018 в 13:11

Первоначальный вопрос (первая часть) был «как проверить переменные окружения в Python».

Вот как проверить, установлен ли $ FOO:

try:  
   os.environ["FOO"]
except KeyError: 
   print "Please set the environment variable FOO"
   sys.exit(1)
53
Scott C Wilson 29 Мар 2012 в 13:58

Что касается переменных среды:

import os
print os.environ["HOME"]

Боюсь, вам придется еще немного конкретизировать свою вторую мысль, прежде чем возможен достойный ответ.

29
Jim Brissom 5 Фев 2011 в 13:07

На самом деле это может быть сделано это далеко:

import os

for item, value in os.environ.items():
    print('{}: {}'.format(item, value))

Или просто:

for i, j in os.environ.items():
    print(i, j)

Для просмотра значения в параметре:

print(os.environ['HOME'])

Или же:

print(os.environ.get('HOME')

Чтобы установить значение:

os.environ['HOME'] = '/new/value'
22
OrionMD 28 Сен 2018 в 11:01

Вы можете получить доступ к переменным среды, используя

import os
print os.environ

Попробуйте просмотреть содержимое переменных окружения PYTHONPATH или PYTHONHOME, возможно, это будет полезно для вашего второго вопроса. Однако вы должны это уточнить.

40
andrei1089 5 Фев 2011 в 13:14

Там также есть несколько замечательных библиотек. Envs, например, позволит вам анализировать объекты из переменных вашей среды, что является рад. Например:

from envs import env
env('SECRET_KEY') # 'your_secret_key_here'
env('SERVER_NAMES',var_type='list') #['your', 'list', 'here']
10
Peter Konneker 19 Дек 2018 в 16:00