尝试将值从dict赋值给fabric env设置

时间:2013-07-30 04:11:03

标签: python fabric

我正在编写我的第一个特定于环境的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值时出错了,但似乎找不到合适的搜索组合给我一个有效的答案。

1 个答案:

答案 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']