正在加载集合

invoke执行模型的核心涉及一个或多个集合对象。虽然这些可以通过编程方式创建,但在典型的使用中,invoke将从它找到或被告知使用的python模块中为您创建它们。

任务模块发现

没有其他配置,只需调用 invoke 将查找一个名为 tasks ,并将其视为根命名空间。 tasks (或通过 loading configuration options )按以下方式搜索:

  • 首先,如果python的 sys.path ,不再进行搜索--已选择该模块。

  • 否则,从用户当前的工作目录开始,搜索本地文件系统的根目录 (os.getcwd )并尝试再次导入,同时将每个目录临时添加到 sys.path .

    • 由于python的导入机制是如何工作的,这种方法总是倾向于使用包目录 (tasks/ 包含一个 __init__.py )在模块文件上 (tasks.py )在同一地点。

    • 如果找到并成功导入候选目录,则其父目录将 staysys.path 在python会话的其余部分中——这允许任务代码对同级模块的可导入性作出方便的假设。

对候选模块/包进行内省,以确保它们实际上可以用作有效的任务集合。任何失败的都会被丢弃, sys.path 输入它们的munging done将恢复,搜索将继续。

配置加载过程

您可以配置上述行为,请求调用更改搜索的集合名称和/或文件系统级别加载开始查找的路径。

例如,您可能已经有一个项目级别 tasks.py 您不能轻易重命名;或者您可能想要托管存储在项目根外的多个任务集合,并使它们之间容易切换;或者有任何原因。

所选集合名称和搜索根均可通过指定。 configuration file options 或作为 runtime CLI flags

  • 更改集合名称 :设置 tasks.collection_name 配置选项,或使用 --collection . 它应该是一个python模块名,而不是一个文件名(所以 mytasks 不是 mytasks.pymytasks/

  • 更改根搜索路径 配置 tasks.search_root 或使用 --search-root . 此值可以是任何有效的目录路径。