python - Fabric的run功能在较大的场景下不起作用,在较小的场景下工作正常

标签 python deployment fabric

这是完整的脚本

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/

相关文章:

python - .bash_profile.pysave 究竟是什么?

amazon-web-services - Elastic Beanstalk : Can't deploy to Windows server, 和 EB 不提取任何日志

heroku - 在不使用heroku docker插件的情况下将docker部署到heroku

python - 在远程 shell 中使用 Fabric to run() 调用时,我可以捕获错误代码吗?

python - 在 Fabric 中如何从远程路径创建全局列表

python - 动态规划: recursion+memoization vs loop+list

关于阅读小文件的python风格问题

python - xticks 的 matplotlib 自定义顺序

git - 为多个环境 fork 我现有的 heroku 应用程序

python - 使用 Fabric 部署到多个 EC2 服务器