这是完整的脚本
from fabric.api import run, env, execute
env.hosts = ['root@host',]
def install():
run('apt-get install git')
run('apt-get install mercurial')
run('apt-get install golang')
def set_GOPATH():
run('echo "export GOPATH=/usr/lib/gopath" > /root/.bash_profile')
run('export GOPATH=/usr/lib/gopath')
def go_get():
run('go get "code.google.com/p/log4go"')
def set_ulimit():
run('ulimit -n 32000')
def get_code():
run('git clone https://me@bitbucket.org/me/rr.git')
def compile():
run('cd rr')
run('go build -o rr example.go')
def run():
run('screen -S rr')
run('./rr')
def doit():
install()
setGOPATH()
go_get()
set_ulimit()
get_code()
compile()
run()
fab doit
返回以下错误:
run('apt-get install git')
TypeError: run() takes no arguments (1 given)
运行时发生同样的错误
fab install
。 如果安装函数被复制到单独的 fabfile 中而没有其他函数,则它可以正常工作。我不明白是什么导致了这种行为。
最佳答案
您已经用自己的方式覆盖了fabric的run
:
def run():
run('screen -S rr')
run('./rr')
给它不同的名称,一切都应该没问题:)
关于python - Fabric的run功能在较大的场景下不起作用,在较小的场景下工作正常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20694405/