在Windows上运行Fabric中的local()命令

时间:2012-01-18 19:39:37

标签: python fabric

我在Windows上的local()命令中发现了一些奇怪的行为,因为升级了Fabric(我之所以这样做是因为本地不能正常工作)。我的fabfile的相关位看起来像这样:

env.hosts = ['server.com:22'] # One or multiple server addresses in format ip:port
env.path = '/code'
env.apache_path = '/apache'
env.user = 'user'
env.prj_name = 'user'
env.password = 'password'

def test():
    local('python manage.py test measurements temperature results', capture=False)

运行fab test用于触发典型的Django测试套件。它仍然在我的Mac上。在Windows上,它现在声称运行该命令,然后在没有实际测试的情况下停止。如果我将env信息移动到命令中(或只删除它),fab test按预期工作。应该是这样的吗? env字典是否会影响local()?

Windows 7上的Fabric 1.3.3,32位Python

1 个答案:

答案 0 :(得分:3)

当调用local函数时,传递的命令实际上被包装并且在不同的env变量中找到前缀(其中一个变量,我在问题中看到的是{ {1}})。因此,最终执行的命令并不完全是传递的命令,并且可能存在一些使命令失败的配置。

要解决这种情况,请确保使用env.path实际执行的命令是什么:

--show=debug

一旦你确切知道执行的命令,你就可以重现问题并找出真正发生的事情。