关于python:如何访问环境变量值?

How to access environment variable values?

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


环境变量通过os.environ访问

1
2
import os
print(os.environ['HOME'])

或者,您可以使用以下命令查看所有环境变量的列表:

1
os.environ

有时你可能需要看到一个完整的列表!

1
2
3
4
5
# 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时找到答案,可以执行以下操作:

1
2
import sys
print(sys.prefix)


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

1
'HOME' in os.environ

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

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

其中/home/username/为违约


最初的问题(第一部分)是"如何检查Python中的环境变量"。

以下是检查是否设置了$foo的方法:

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


您可以使用

1
2
import os
print os.environ

尝试查看pythonpath或pythonhome环境变量的内容,这可能对您的第二个问题有所帮助。不过,你应该澄清一下。


对于环境变量:

1
2
import os
print os.environ["HOME"]

恐怕你得把第二点再充实一点,才能有一个像样的答案。


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

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


如果计划在生产Web应用程序代码中使用该代码,使用任何像django/flask这样的Web框架,使用envparse这样的项目,可以将值作为定义的类型读取。

1
2
3
4
5
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)

注:Kennetheritz的Autoenv是一个推荐的工具,用于制作特定于项目的环境变量,请注意,那些使用autoenv的人请将.env文件保持为私有(不可公开)。


这里有一个单行选项,假设导入操作系统已经完成:

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

或使用格式:

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

在Python 3中:

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


事实上,可以这样做:

1
2
3
4
import os

for item, value in os.environ.items():
    print('{}: {}'.format(item, value))

或者简单地说:

1
2
for i, j in os.environ.items():
    print(i, j)

查看参数中的值:

1
print(os.environ['HOME'])

或:

1
print(os.environ.get('HOME')

要设置该值:

1
os.environ['HOME'] = '/new/value'


对于os.environ.get

1
2
3
4
try:  
   env_value = os.environ.get("key_maybe_not_exist")
except KeyError:
   print("Not exist environment value for %s" %"key_maybe_not_exist")

或:

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

对于os.getenv

1
existed_env_value = os.getenv("key_maybe_not_exist")

相当于:

1
existed_env_value = os.getenv("key_maybe_not_exist", default=None)


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

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