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默认安装是
1 2 | import sys print(sys.prefix) |
检查密钥是否存在(返回
1 | 'HOME' in os.environ |
打印密钥时也可以使用
1 | print(os.environ.get('HOME', '/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是一个推荐的工具,用于制作特定于项目的环境变量,请注意,那些使用
这里有一个单行选项,假设导入操作系统已经完成:
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' |
对于
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"] |
对于
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'] |