在Windows上运行Fabric中的local()命令
我注意到在Windows上使用local()命令时出现了一些奇怪的情况,这个问题是在我升级Fabric之后发现的(我之所以升级是因为local命令之前不工作)。我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上,它现在声称正在运行命令,但实际上没有进行任何测试。如果我把环境信息移到命令里(或者直接删除它),fab test
就能正常工作。这种情况应该是这样的吗?环境字典会影响local()吗?
我在Windows 7上使用Fabric 1.3.3,32位Python。
1 个回答
3
当你调用一个 local
函数时,实际上你传入的命令会被一些不同的 env
变量包裹和前缀(在这个问题中提到的一个变量是 env.path
)。所以,最终执行的命令并不完全是你传入的那个命令,可能还有一些配置导致这个命令执行失败。
要解决这个问题,确保你知道到底执行了什么命令,可以使用 --show=debug
来查看:
fab --show=debug <task>
一旦你确切知道执行的命令是什么,你就可以尝试重现这个问题,找出到底发生了什么。