我在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
答案 0 :(得分:3)
当调用local
函数时,传递的命令实际上被包装并且在不同的env
变量中找到前缀(其中一个变量,我在问题中看到的是{ {1}})。因此,最终执行的命令并不完全是传递的命令,并且可能存在一些使命令失败的配置。
要解决这种情况,请确保使用env.path
实际执行的命令是什么:
--show=debug
一旦你确切知道执行的命令,你就可以重现问题并找出真正发生的事情。