如何重命名命名空间的结构命令

时间:2013-05-24 17:54:27

标签: python fabric

如何控制自定义Fabric命令的显示方式?

我在各种包中组织我的命令,如:

mydomain
    __init__.py
    db.py
        @task
        def create()...

        @task()
        def dump()...

        @task
        def shell()...

当我运行fab --list时,我看到Fabric公开了以mydomain为前缀的命令:

mydomain.db.create
mydomain.db.dump
mydomain.db.shell

如何让Fabric删除mydomain前缀,同时仍然将任务组织在我的自定义命名空间中?我已尝试在@task(name=...)中指定名称,但这对命名空间没有影响。

1 个答案:

答案 0 :(得分:1)

我有以下结构,它没有包名称的前缀。

fab --version
Fabric 1.8.0
Paramiko 1.12.0

rootdir/
     fabfile.py
     mydomain/
             __init__.py
             db.py
             other.py

fabfile.py

from fabric.api import task
from mydomain import db, other

@task
def boom():
    print "boom"

db.py

from fabric.api import task

@task
def create():
    print "create"

@task()
def dump():
    print "dump"

other.py

from fabric.api import task

@task
def do_stuff():
    print "doing stuff"

fab --list output

fab --list
Available commands:

    boom
    db.create
    db.dump
    other.do_stuff

我注意到如果我用

导入
import mydomain.db
import mydomain.other

然后输出是:

fab --list
Available commands:

    boom
    mydomain.db.create
    mydomain.db.dump
    mydomain.other.do_stuff

那么看一下你导入包的方式,这似乎是导致它的原因