Python 是否可以将fabfile作为全局脚本运行

Python 是否可以将fabfile作为全局脚本运行,python,shell,system,fabric,Python,Shell,System,Fabric,本周,我为我们的开发人员编写了一个fabfile,以帮助将DBs和文件部署到远程登台和生产环境。这是一个相当复杂的文件,它使用配置好的json文件来帮助设置生产/登台环境变量 我的问题是,我是否可以将我的fabfile添加到/usr/bin以全局运行该fabfile。能够运行命令,而无需将文件复制并通过每个webroot(设计机构问题) 理想情况下,我可以: fab deploy 在Sites/site.dev/或Sites/site2.dev/中,无需将文件复制到这些目录中。我想一定有办法用

本周,我为我们的开发人员编写了一个fabfile,以帮助将DBs和文件部署到远程登台和生产环境。这是一个相当复杂的文件,它使用配置好的json文件来帮助设置生产/登台环境变量

我的问题是,我是否可以将我的fabfile添加到/usr/bin以全局运行该fabfile。能够运行命令,而无需将文件复制并通过每个webroot(设计机构问题)

理想情况下,我可以:

fab deploy
在Sites/site.dev/或Sites/site2.dev/中,无需将文件复制到这些目录中。我想一定有办法用别名来完成这项工作,但我的知识太薄弱,无法完成这项工作


我的系统是osx。

我想我解决了我的困境。事实证明,您可以使用-f标志指定文件位置。从这里开始,为命令创建别名非常简单,例如

alias deployfiles='fab -f ../devops/fabfile.py syncfiles'

$ deployfiles

很明显,很惊讶没有人给出这个解决方案。

我想我解决了我的困境。事实证明,您可以使用-f标志指定文件位置。从这里开始,为命令创建别名非常简单,例如

alias deployfiles='fab -f ../devops/fabfile.py syncfiles'

$ deployfiles

很明显,令人惊讶的是,没有人给出这个解决方案。

在Mac上,另一个选择是将以下内容添加到fab文件的顶部:

#!/usr/bin/env fab -f

def boo():
    print 'x'
然后您可以这样运行它:

(venv)machine:soft kane$ ./test.py -l
Available commands:

    boo
(venv)machine:soft kane$ ./test.py boo
x

Done.

在Mac上,另一个选项是将以下内容添加到fab文件的顶部:

#!/usr/bin/env fab -f

def boo():
    print 'x'
然后您可以这样运行它:

(venv)machine:soft kane$ ./test.py -l
Available commands:

    boo
(venv)machine:soft kane$ ./test.py boo
x

Done.

注意fab,因为它正在搜索从当前目录相对运行的文件。如果要编写“全局脚本”,请确保您位于正确的目录中。所有命令都使用相对路径。如果我在当前站点的webroot中运行fab deploy,它将在当前工作目录中查找fabric_config.json文件。我进行了检查,以确保在运行之前需要存在的文件存在。请注意fab,因为它正在搜索相对从当前目录运行的文件。如果要编写“全局脚本”,请确保您位于正确的目录中。所有命令都使用相对路径。如果我在当前站点的webroot中运行fab deploy,它将在当前工作目录中查找fabric_config.json文件。我进行了检查,以确保运行前需要存在的文件存在。