Відповіді:
До змінних середовища можна отримати доступ через 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)
.get()
також може бути призначений за замовчуванням.
Щоб перевірити, чи існує ключ (повертається True
чи False
)
'HOME' in os.environ
Ви також можете використовувати get()
під час друку ключа; корисно, якщо ви хочете використовувати за замовчуванням.
print(os.environ.get('HOME', '/home/username/'))
де /home/username/
за замовчуванням
"HOME" in os.environ
чи os.environ.get('HOME')
?
"HOME" in os.environ
проти os.environ.get('HOME') is None
. Як бачимо спочатку, це набагато легше читати та зручніше працювати.
Первісне питання (перша частина) було "як перевірити змінні середовища в Python".
Ось як перевірити, чи встановлено $ FOO:
try:
os.environ["FOO"]
except KeyError:
print "Please set the environment variable FOO"
sys.exit(1)
"if 'FOO' not in os.environ: ..."
блок
Ви можете отримати доступ до змінних середовища за допомогою
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")
Це буде друкувати всі змінні середовища разом із їх значеннями.
Насправді це можна зробити за допомогою:
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'
str.format
- просто фантазійне доповнення.
>>> import os, pprint; pprint.pprint(list(os.environ.items()))
Якщо ви плануєте використовувати код у виробничому коді веб-додатків,
використовуючи будь-який веб-фреймворк, як 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 є рекомендованим інструментом для створення змінних середовища для конкретних проектів. Зверніть увагу, що ті, хто використовує, autoenv
зберігають .env
файл приватним (недоступним для загального доступу)
Також є велика кількість чудових бібліотек. Наприклад, envs дозволить вам розбирати об'єкти із змінних оточуючого середовища, що є rad. Наприклад:
from envs import env
env('SECRET_KEY') # 'your_secret_key_here'
env('SERVER_NAMES',var_type='list') #['your', 'list', 'here']
Про джанго дивіться ( 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')
Ви також можете спробувати це
Спочатку встановіть python-decouple
pip install python-decouple
імпортуйте його у свій файл
from decouple import config
Потім отримайте змінну env
SECRET_KEY=config('SECRET_KEY')
Детальніше про бібліотеку пітона читайте тут