我正在完成Fabric Namespaces的基础教程。
我希望做类似于Structuring a fabric project with namespaces
的事情我的__init__.py
文件显示:
from fabric.api import task
@task
def abc():
pass
当我运行fab --list
时,我收到此错误:
me@galvatron:/tmp/fabric_test$ fab --list
Fatal error: Couldn't find any fabfiles!
Remember that -f can be used to specify fabfile path, and use -h for help.
Aborting.
有谁能告诉我我错过了什么或做错了什么?
答案 0 :(得分:4)
答案 1 :(得分:2)
我有同样的问题。我按照文档http://docs.fabfile.org/en/1.8/usage/fabfiles.html#fabfile-discovery,构建了一个名为fabfile
的模块,并在其中放置了不同的fabfiles,但当我尝试运行fab -l
时出现错误Fatal error: Fabfile didn't contain any commands!
。
要解决这个问题,我必须导入fabfile/__init__.py
中的所有fabfiles,如下所示:
from myfab_1 import *
from other_fab import *
from other_tasks import *
在此之后,我可以fab -l
并获得所有文件中所有任务的列表。调用fab some_task
也开始工作了。
答案 2 :(得分:0)
我也只是在玩布料,而且文档很薄。
对于使用没有-f你要使用的新函数的结构你需要在一个名为fabfile.py的文件中定义它们,所以尝试将你的函数放在这个文件中,删除所有其他文件,然后'fab abc'应该工作太棒了!
答案 3 :(得分:0)
如果要执行除fabfile之外的任何其他名称的文件,例如:filename.py
我的filename.py包含内容:
def hello():
print ("Hello world")
你必须执行这样的命令:
fab -f pathToFile methodnameInside.
示例:fab -f filename.py hello