正在加载集合¶
invoke执行模型的核心涉及一个或多个集合对象。虽然这些可以通过编程方式创建,但在典型的使用中,invoke将从它找到或被告知使用的python模块中为您创建它们。
任务模块发现¶
没有其他配置,只需调用 invoke
将查找一个名为 tasks
,并将其视为根命名空间。 tasks
(或通过 loading configuration options )按以下方式搜索:
首先,如果使用该名称的有效任务模块已经存在于 sys.path ,则不再进行搜索--选择该模块。
如果失败,则搜索本地文件系统的根目录,从用户的当前工作目录开始 (os.getcwd ),并尝试再次导入,每个目录临时添加到
sys.path
。由于python的导入机制是如何工作的,这种方法总是倾向于使用包目录 (
tasks/
包含一个__init__.py
)在模块文件上 (tasks.py
)在同一地点。如果找到并成功导入候选目录,则其父目录将 stay 在
sys.path
在python会话的其余部分中——这允许任务代码对同级模块的可导入性作出方便的假设。
对候选模块/包进行内省,以确保它们实际上可以用作有效的任务集合。任何失败的都会被丢弃, sys.path
输入它们的munging done将恢复,搜索将继续。
配置加载过程¶
您可以配置上述行为,请求调用更改搜索的集合名称和/或文件系统级别加载开始查找的路径。
例如,您可能已经有一个项目级别 tasks.py
您不能轻易重命名;或者您可能想要托管存储在项目根外的多个任务集合,并使它们之间容易切换;或者有任何原因。
所选集合名称和搜索根均可通过指定。 configuration file options 或作为 runtime CLI flags :
更改集合名称 :设置
tasks.collection_name
配置选项,或使用--collection
. 它应该是一个python模块名,而不是一个文件名(所以mytasks
不是mytasks.py
或mytasks/
)更改根搜索路径 配置
tasks.search_root
或使用--search-root
. 此值可以是任何有效的目录路径。