如何访问环境变量值?

我设置了要在我的 Python 应用程序中访问的环境变量。我如何获得这个价值?

答案

通过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))

Windows 上的Python 默认安装C:\Python 。如果要在运行 python 时查找,可以执行以下操作:

import sys
print(sys.prefix)

检查密钥是否存在(返回TrueFalse

'HOME' in os.environ

您也可以在打印密钥时使用get() 。如果要使用默认值,则很有用。

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")

这将打印所有环境变量及其值。

实际上,可以这样做:

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'

如果您打算在生产 Web 应用程序代码中使用该代码,
使用 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文件为私有文件(不公开)

还有很多很棒的图书馆。例如, Envs将允许您从环境变量 rad 中解析对象。例如:

from envs import env
env('SECRET_KEY') # 'your_secret_key_here'
env('SERVER_NAMES',var_type='list') #['your', 'list', 'here']

对于 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')