在项目子文件夹中进行调用搜索task.py

时间:2018-12-10 08:47:34

标签: python invoke

我在项目中使用Invoke来运行一些代码质量任务(pylint,pycodestyle,pydocstyle等)。

因此,我在项目的根目录下有一个文件tasks.py

我还有另外两个将执行相同任务的存储库。

因此,我想在所有回购的子模块git中共享此tasks.py文件。

问题是我无法通过调用在项目的子文件夹中找到tasks.py,并且文档不够清晰/我不熟悉所提到的Config / Context对象。

有人遇到过这个问题吗?

1 个答案:

答案 0 :(得分:1)

这个问题有点过时了,但我最近自己也遇到了同样的问题,所以这里是:

选项 1 - 使用运行时配置

invoke 似乎可以选择搜索 from a different sources root using the -r option。然而,这似乎not to work at the time when using configuration files

选项 2 - 加载嵌套文件作为导入

您可以尝试稍微修改 invoke's 加载选项。假设您的文件夹结构是这样的:

| repository root:
| ├── some other files/folders
| ├── submodule:
|    ├── tasks.py
|    ├── some other files/folders

您可以在存储库根目录下添加一个 tasks.py

| repository root:
| ├── some other files/folders
| ├── tasks.py # new one that we added
| ├── submodule:
|    ├── tasks.py
|    ├── some other files/folders

在这个新的 tasks.py 中导入 sumbodule tasks.py 代码:

from submodule.tasks import *

这会将嵌套的 tasks.py 的内容加载到根目录中,invoke 将识别其中的所有内容。不过,您应该对一个警告感到厌烦,如果嵌套的 tasks.py 使用自己的导入而父项不能使用,则任务可能会在运行时失败。