' CD'命令不使用fabric3

时间:2017-02-07 21:06:02

标签: python fabric

我正在使用fabric3(https://pypi.python.org/pypi/Fabric3),python 3端口结构。

我有以下功能:

@roles('production')
def dir():
    run('pwd')
    run('ls')
    cd('/home/deploy/mydir')
    run('pwd')

输出:

$ fab dir
[deploy@196.x.x.x] Executing task 'dir'
[deploy@196.x.x.x] run: pwd
[deploy@196.x.x.x] out: /home/deploy
[deploy@196.x.x.x] out:

[deploy@196.x.x.x] run: ls
[deploy@196.x.x.x] out: Env  mysite
[deploy@196.x.x.x] out:

[deploy@196.x.x.x] run: pwd
[deploy@196.x.x.x] out: /home/deploy
[deploy@196.x.x.x] out:

为什么忽略了CD?

1 个答案:

答案 0 :(得分:4)

每个命令都在分离的“环境”中工作。

cd()更改文件夹但下一个命令以新的,明确的“环境”开始。

但您可以使用with

 with cd("<path>"):   
     run("<command>")

在Fabric doc中查看更多内容:Context Managers

或者您可以手动执行

run("cd <path> && <command>")