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

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

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)

чтобы проверить, существует ли ключ (возвращает 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/ по умолчанию


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

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

try:  
   os.environ["FOO"]
except KeyError: 
   print "Please set the environment variable FOO"
   sys.exit(1)

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

import os
print os.environ

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


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

import os
print os.environ["HOME"]

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


import os
for a in os.environ:
    print('Var: ', a, 'Value: ', os.getenv(a))
print("all done")

это выведет все переменные среды вместе с их значениями.


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


В Python 3:

#!/usr/bin/python3
import os
for param in os.environ.keys():
    print("%s: %s " % (param, os.environ[param]))

вот однострочный вариант, предполагающий импорт ОС было сделано:

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

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

for key in os.environ: print('{:>30} {:<4} {:}'.format(key,':',os.environ[key]))

на 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)

на самом деле это можно сделать это:

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'