我正在编写我的第一个特定于环境的 fabfile。本质上,我为每个环境创建了一个 env 设置文件,其中包含一个带有用户、密码和主机的 json 字符串。然后我为每个在实际部署函数之前调用的环境分配了一个任务。像这样:
fab dev deployApp
dev 任务(在本例中)调用我编写的函数来解析相关设置文件并尝试将 env 设置设置为解析后的值。
def set_env(env):
json_data = open(env + '_settings.env', 'r')
env_data = json.load(json_data)
json_data.close()
env.user = env_data['user']
env.password = env_data['password']
但是,当我调用此函数时,我收到以下我似乎无法破译的错误:
env.user = "" + env_data['user']
AttributeError: 'str' object has no attribute 'user'
我通过打印值测试了正在读取文件,它们确实是正确的。我假设我在访问 dict 值时做错了什么,但似乎无法找到正确的搜索组合来给我一个有效的答案。
最佳答案
更改参数名称,因为它正在替换您的全局变量 env
。像这样的东西:
def set_env(env_str):
json_data = open(env_str + '_settings.env', 'r')
env_data = json.load(json_data)
json_data.close()
env.user = env_data['user']
env.password = env_data['password']
关于python - 尝试将字典中的值分配给结构环境设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17938159/