无法从Yaml文件设置环境变量

问题描述 投票:0回答:1

我使用environ设置环境变量,但现在我需要更改为yml文件。我已经做了一个功能来打开我的yml文件并加载它,我认为这里一切都很好。然后在__init__.py中使用该函数,将路径传递到yml文件,然后使用app.config.from_object(data)将环境变量加载到系统中。问题是我在yml文件中设置的环境变量没有被应用程序使用,因为我收到一条错误消息,说我的LDAPUSERNAME不能为None。

这是我使用环境的config.py:

LDAP_BASE_DN = os.environ.get('LDAP_BASE_DN', default= "dc=planetexpress,dc=com")
LDAP_USERNAME = os.environ.get('LDAP_USERNAME', default="CN=Hermes Conrad,ou=people,dc=planetexpress,dc=com")
LDAP_PASSWORD = os.environ.get('LDAP_PASSWORD', default="hermes")

这是我要使用的yml文件:

LDAP_BASE_DN: 'dc=planetexpress,dc=com'
LDAP_USERNAME: 'CN=Hermes Conrad,ou=people,dc=planetexpress,dc=com'
LDAP_OPENLDAP: 'yes'

yaml_loader.py


from yaml import load, Loader, dump, Dumper



def yaml(filepath):
    with open(filepath, 'r') as stream:

        data_loaded = load(stream, Loader=Loader)

        return data_loaded

init。py

app.config.from_object('dev_maintenance.config')---> "used to load the environ"

data = yaml_loader.yaml("/Users/pjose/Project/dev_maintenance/backend/config.yml")
app.config.from_object(data) ---> using now to load the yml

这不起作用,我不知道为什么有帮助吗?

python-3.x pyyaml
1个回答
0
投票

您需要根据以下内容的键值对自行设置环境条目:已加载data

import os
from yaml import load, Loader


yaml_str = """\
LDAP_BASE_DN: dc=planetexpress,dc=com
LDAP_USERNAME: CN=Hermes Conrad,ou=people,dc=planetexpress,dc=com
LDAP_OPENLDAP: 'yes'
"""

data = load(yaml_str, Loader=Loader)
for k in data:
    os.environ[k] = data[k]

[请注意,您需要引用yes,因为PyYAML仍仅实现YAML 1.1规范(已过时十年)它将看到yes为布尔值。但是其他引号是不必要的。

© www.soinside.com 2019 - 2024. All rights reserved.