首页 > 解决方案 > 有没有一种优雅的方法来检查是否设置了一组环境变量?

问题描述

有没有办法优雅地检查是否设置了已知数量的环境变量?

这是在 MacOS 上,运行 Python 3.7.3。我正在创建一个命令行应用程序,它将连接到 Google Sheet 以及 MySQL 数据库。在进行所有连接之前,我想要一种优雅的方式来检查所有环境。变量被设置。如果未设置一个或多个,那么我不会尝试连接到 Google 或 MySQL。

try: 
    #print("Checking ENVIRONMENT variables...") 
    SPREADSHEET_ID = os.environ['SPREADSHEET_ID']
    SERVICE_ACCESS_FILE = os.environ['SERVICE_ACCESS_FILE']
    MYSQL_HOST = os.environ['MYSQL_HOST']
    MYSQL_DATABASE = os.environ['MYSQL_DATABASE']
    MYSQL_ID = os.environ['MYSQL_UID']
    MYSQL_PWD = os.environ['MYSQL_PWD']
    MTEST = os.environ['MTEST']
    #print("All environment variables are set.")
except KeyError:  
    print("One or more Environment variables do not exist")

上述代码工作正常,但如果我能有一些干净的方法来检查每一个,那就太好了。我可以为每个变量做一个“如果存在”之类的事情,但这似乎很草率。把它放在一个可以处理这个问题的函数中会更好吗?也许让用户知道哪些变量没有设置?

标签: python-3.xenvironment-variables

解决方案


不一定是最好的方法,但这里有一个简单的方法:

env_vars = ['SPREADSHEET_ID', 'SERVICE_ACCESS_FILE', ...]
if not set(os.environ).issuperset(env_vars):
    print("One or more Environment variables do not exist")

甚至更好:

missing = set(env_vars) - set(os.environ)
if missing:
    print("Environment variables do not exist: %s" % missing)

推荐阅读