python - Fabric 2 使用全局设置
问题描述
在 Fabric1 中,可以将一堆设置放入 fabfile.py 并从另一个包中导入实际任务。这是需要的,因为我将这些任务用于多个项目。
像这样:
from fabric.api import env
env.django_dir = '/home/someuser/django_app'
env.git_repo = 'some url'
然后任何结构代码都可以像这样访问变量:
from fabric.api import env
def clone():
with cd('$HOME'):
run('git clone {repo} {django_dir}'.format(
repo=env.git_repo, django_dir=env.django_dir))
然而,似乎从 fabric2 不再存在这样的东西env
。
如何从另一个包中获取我的任务以使用 fabfile.py 中的配置设置?
解决方案
在文档中进一步挖掘之后,我遇到了:一个引用 Invoke的配置页面。
事实证明,所有需要做的就是在 fabfile.py 旁边创建一个新文件,名为fabric.py
.
在 中声明你的变量fabric.py
。
django_dir = 'django_app'
git_repo = 'some url'
在任务中,您可以通过与c.config
def clone(c):
# with isn't implemented yet, chain with &&
c.run('cd $HOME && git clone {} {}'.format(
c.config.git_repo, c.config.django_dir))