Python 导入Ansible模块utils

Python 导入Ansible模块utils,python,coding-style,python-import,ansible,Python,Coding Style,Python Import,Ansible,Ansible声明: [编写Ansible模块]的关键部分包括始终以以下内容结束模块文件: from ansible.module_utils.basic import * main() 这与通常在文件顶部对导入进行分组的做法相矛盾。使用import*也会阻止线头工具(如flake8)有效工作,并且会导致损坏 是否有任何理由以这种方式导入,或者Ansible只是在这里提出自己的风格建议?注意:下面的答案不再适用于Ansible 2.1+。从评论中: 我意识到这是一篇老文章,但如果有人仍然感兴趣

Ansible声明:

[编写Ansible模块]的关键部分包括始终以以下内容结束模块文件:

from ansible.module_utils.basic import *
main()
这与通常在文件顶部对导入进行分组的做法相矛盾。使用
import*
也会阻止线头工具(如flake8)有效工作,并且会导致损坏


是否有任何理由以这种方式导入,或者Ansible只是在这里提出自己的风格建议?

注意:下面的答案不再适用于Ansible 2.1+。从评论中:

我意识到这是一篇老文章,但如果有人仍然感兴趣,值得注意的是,自从ansible 2.1以来,这不再是事实。摘自:在Ansible-2.1.0之前,仅从Ansible.module_utils.basic导入您使用的内容不起作用。您需要使用通配符导入-

原始答案 Ansible(),如果您不做
导入*
业务。我不是百分之百确定魔术是怎么做的,但我知道是这样的

替换程序用于在之前将代码块插入模块中 转移与传统的python导入不同,这允许更多 通过不移动额外文件,在无引导方案中实现高效传输 并且还负责将参数嵌入到传输的 模块

此版本以这样的方式完成,本地导入仍然可以 在模块代码中使用,因此IDE不必知道发生了什么

例如:

from ansible.module_utils.basic import * 
。。。将导致在模块中插入basic.py 从源代码树中的module_utils/目录

所有模块都需要至少导入basic,但也会有 可能是其他片段


Ansible只是在他们一起的时候编出来的。忽略它们并正确地做它。@augurar我意识到这是一篇老文章,但如果有人仍然感兴趣,值得注意的是,自从ansible 2.1以来,这不再是真的。摘自:在Ansible-2.1.0之前,仅从Ansible.module_utils.basic导入您使用的内容不起作用。您需要使用通配符导入