2013-12-20 23 views
1

工作正常,以下是完整的腳本面料的運行功能不能在更大的情景工作,並在較小的

from fabric.api import run, env, execute 

env.hosts = ['[email protected]',] 

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://[email protected]/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中,而沒有其他功能,它工作正常。我不明白是什麼原因導致此類行爲。

回答

3

你有覆蓋物的run與你自己:

def run():  
    run('screen -S rr') 
    run('./rr') 

給它不同的名字,一切都應該罰款:)

+0

非常感謝您!我在牆上撞了幾個小時...... – Moonwalker

+0

@Moonwalker,golang的+1)) –