Есть ли элегантный способ проверить, установлена ​​ли группа переменных среды? - PullRequest
1 голос
/ 23 октября 2019

Есть ли способ элегантно проверить, установлено ли известное количество переменных среды?

Это на MacOS, работающей на Python 3.7.3. Я создаю приложение для командной строки, которое будет подключаться к Google Sheet, а также к базе данных MySQL. Прежде чем выполнять все соединения, я хотел бы элегантный способ проверить, что все из env. переменные установлены. Если один или несколько НЕ установлен, тогда я не буду пытаться подключиться к 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")

Вышеупомянутый код работает нормально, но было бы неплохо, если бы у меня был какой-то чистый способпроверки каждого. Я мог бы сделать что-то вроде «если существует» для каждой переменной, но это кажется небрежным. Лучше ли поместить это в функцию, которая будет обрабатывать это? И, возможно, сообщить пользователю, какие переменные не установлены?

1 Ответ

1 голос
/ 23 октября 2019

Не обязательно лучший способ, но вот простой вкладыш:

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