我当时使用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
初始化 .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
它不起作用,我不知道为什么 有帮助吗?
答案 0 :(得分:0)
您需要根据的键值对自己设置环境条目
已加载final List<DocumentSnapshot> documents;
final Map<String, double> concept;
concept= documents.fold({}, (Map<String, double> map, document) {
if (!map.containsKey(document['name'])) {
map[document['name']] = 0.0;
}
map[document['name']] += document['age'];
return map;
}
print(concept); //name1, 80
:
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]
,因为PyYAML仍仅实现
YAML 1.1规范(已过时十年)
它将yes
视为布尔值。但是其他引号是不必要的。