You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在本地Ansible集合的Python模块中导入自定义复用函数?

Ansible集合中模块复用代码的正确实现方式

第一步:调整目录结构

将可复用的工具库文件放在集合的plugins/module_utils目录下,这是Ansible官方规定的集合内模块工具类标准存放位置,调整后的完整结构如下:

/
|_ collections
|  |_ ansible_collections
|     |_ my # Namespace
|        |_ tools # Collection
|           |_ plugins
|              |_ modules
|                 |_ my_module.py # 业务模块
|              |_ module_utils
|                 |_ my_lib.py # 可复用工具库
|_ my_playbook.yml

第二步:正确导入工具库

在my_module.py中使用集合完整路径导入工具类/函数,无需手动修改sys.path,示例代码:

# 完整路径导入(兼容所有Ansible版本)
from ansible_collections.my.tools.plugins.module_utils.my_lib import my_func

# 简洁写法(Ansible 2.10及以上版本支持)
from my.tools.module_utils.my_lib import my_func

常见错误说明

  • 不要将工具库放在plugins/modules目录下:该目录仅用于存放可直接调用的Ansible模块,而非复用代码
  • 避免手动修改sys.path:Ansible运行时会自动识别集合的标准目录结构并加载路径,手动修改容易引发环境兼容性问题
  • 不要使用from module_utils.my_lib import my_func:这种写法仅适用于Ansible核心模块的工具类导入,集合内模块必须指定完整的命名空间路径

内容的提问来源于stack exchange,提问作者jeremywat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 15:00:05