2014-03-12 95 views
2

我在a.py中有任務A,在b.py中是B,而任務B執行A,因此在b.py中有一個'import a'。在python模塊中組織織物任務

當我做'fab --list'時,我得到a.A,b.B和b.a.A.我怎樣才能避免fab列表中的b.a.A?謝謝。

回答

2

通過限制從模塊導出的功能,可以限制織物將在fab -l中顯示的內容。這方面的一個很好的說明了defining tasks織物的文件(特別是在namespacesLimiting with __all__的章節中給出

如果你有你的fabfile目錄中是這樣的:。

. 
└── fabfile 
    ├── a.py 
    ├── b.py 
    └── __init__.py 

蠻力這樣做,這是通過重命名在__init__.py

import a 
import b  
A = a.A 
B = b.B 

a.py(和b.py)你擋住的所有功能與0出口

from fabric.api import * 

@task 
def A(): 
    pass 

__all__ = [] 

運行fab -l下一次,你應該得到正確的結果

$ fab -l 
Available commands: 

    A 
    B 

然而,這是值得我們思考的,這是否是你想要做的事。通常情況下,如果您有足夠的功能來使織物的輸出難以閱讀,那麼您可能需要考慮您是否合法地首先將這些功能作爲任務運行。

__all__劈另一種方法是讓織物呈現以不同的格式的任務是,可能是,更易讀

$ fab --list-format=nested --list 

Available commands (remember to call as module.[...].task): 

    A 
    B 
    a: 
     A 
    b: 
     B