Как получить доступ к значениям переменных среды? - PullRequest
1699 голосов
/ 05 февраля 2011

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

Ответы [ 9 ]

2570 голосов
/ 05 февраля 2011

Переменные среды доступны через 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)
190 голосов
/ 12 июля 2012

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

'HOME' in os.environ

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

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

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

45 голосов
/ 29 марта 2012

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

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

try:  
   os.environ["FOO"]
except KeyError: 
   print "Please set the environment variable FOO"
   sys.exit(1)
32 голосов
/ 05 февраля 2011

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

import os
print os.environ

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

22 голосов
/ 05 февраля 2011

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

import os
print os.environ["HOME"]

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

18 голосов
/ 28 марта 2017
import os
for a in os.environ:
    print('Var: ', a, 'Value: ', os.getenv(a))
print("all done")

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

13 голосов
/ 10 января 2017

Если вы планируете использовать код в рабочем коде веб-приложения,
используя любой веб-фреймворк, такой как 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's autoenv - это рекомендуемый инструмент для создания переменных среды, специфичных для проекта, обратите внимание, что те, кто использует autoenv, сохраняют файл .env закрытым (недоступным для общественности)

9 голосов
/ 10 марта 2018

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

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'
3 голосов
/ 19 декабря 2018

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

from envs import env
env('SECRET_KEY') # 'your_secret_key_here'
env('SERVER_NAMES',var_type='list') #['your', 'list', 'here']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...