我正在编写我的第一个特定于环境的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值时出错了,但似乎找不到合适的搜索组合给我一个有效的答案。
答案 0 :(得分:4)
更改参数名称,因为它正在替换全局变量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']