Как получить доступ к переменным среды из Python?

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

1294
задан Amit Yadav 05 февр. '11 в 16:03
источник поделиться
11 ответов

Доступ к переменным окружениям осуществляется через 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)
1969
ответ дан Rod 05 февр. '11 в 16:18
источник поделиться

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

"HOME" in os.environ

или (удалено из python 3.x)

os.environ.has_key("HOME")

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

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

где /home/username/ является значением по умолчанию

132
ответ дан lgriffiths 12 июля '12 в 11:14
источник поделиться

Первоначальный вопрос (первая часть) - это "как проверить переменные среды на Python".

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

try:  
   os.environ["FOO"]
except KeyError: 
   print "Please set the environment variable FOO"
   sys.exit(1)
33
ответ дан Scott C Wilson 29 марта '12 в 16:58
источник поделиться

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

import os
print os.environ

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

21
ответ дан andrei1089 05 февр. '11 в 16:07
источник поделиться

Что касается переменных окружения:

import os
print os.environ["HOME"]

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

13
ответ дан Jim Brissom 05 февр. '11 в 16:07
источник поделиться
import os
for a in os.environ:
    print('Var: ', a, 'Value: ', os.getenv(a))
print("all done")

Это будет печатать все переменные среды вместе со своими значениями.

9
ответ дан Azorian 28 марта '17 в 18:46
источник поделиться

Если вы планируете использовать код в коде веб-приложения для производства,
используя любую веб-инфраструктуру, такую ​​как 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)

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

6
ответ дан I Am Batman 10 янв. '17 в 7:12
источник поделиться

В Python 3:

#!/usr/bin/python3
import os
for param in os.environ.keys():
    print("%s: %s " % (param, os.environ[param]))
5
ответ дан Kardi Teknomo 21 февр. '18 в 14:16
источник поделиться

Вот вариант с одной строкой, предполагающий import os:

for key in os.environ: print(key,':',os.environ[key])

или с форматированием:

for key in os.environ: print('{:>30} {:<4} {:}'.format(key,':',os.environ[key]))
3
ответ дан pudepied 27 марта '18 в 10:34
источник поделиться

для os.environ.get:

try:  
   env_value = os.environ.get["key_maybe_not_exist"]
except KeyError: 
   print("Not exist environment value for %s" % "key_maybe_not_exist")

или:

if "key_maybe_not_exist" in os.environ:
    existed_env_value = os.environ["key_maybe_not_exist"]

для os.getenv:

existed_env_value = os.getenv("key_maybe_not_exist")

эквивалентно:

existed_env_value = os.getenv("key_maybe_not_exist", default=None)
0
ответ дан crifan 22 авг. '18 в 4:47
источник поделиться

Фактически может быть это прочь:

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'
-1
ответ дан britodfbr 10 марта '18 в 18:52
источник поделиться

Другие вопросы по меткам