Ansible导入异常:无法导入_ADDITIONAL_CHECKS如何修复?
修复方案
问题根源
这个导入错误是由于Ansible核心包冲突和集合与核心版本不兼容导致的:
ansible和ansible-base同时安装会引发版本冲突(Ansible 2.10+ 后,ansible包已包含ansible-base核心功能,两者互斥)- 安装的社区集合(如
amazon.aws)与当前Ansible核心版本不匹配,导致内部模块导入失败
具体修复步骤
1. 修正Python依赖列表
编辑 requirements.txt,删除 ansible-base 条目,并为 ansible 指定一个稳定的版本范围,避免自动安装不兼容的最新版本:
ansible>=2.14,<2.16 ansible-lint awscli boto3 botocore bracex cffi click colorama commonmark cryptography enrich Jinja2 jmespath loguru MarkupSafe netaddr packaging paramiko prettytable pyasn1 pycparser Pygments pyparsing python-dateutil PyYAML rich ruamel.yaml ruamel.yaml.clib s3transfer six tenacity urllib3 wcmatch yaspin pre-commit
2. 指定集合兼容版本
编辑 ansible/ansible_requirements.yml,为每个集合添加兼容的版本号,确保与指定的Ansible核心版本匹配:
collections: - name: amazon.aws version: 6.0.0 - name: community.general version: 7.0.0 - name: kubernetes.core version: 2.4.0
3. 重建虚拟环境并重新执行脚本
先清理旧的虚拟环境,再重新运行部署脚本:
rm -rf venv # 运行你的部署脚本,比如: ./deploy.sh
4. 验证修复结果
激活虚拟环境后,检查版本兼容性:
. venv/bin/activate # 查看Ansible核心版本 ansible --version # 查看已安装的集合版本 ansible-galaxy collection list
确认输出中Ansible核心版本在 2.14-2.15 区间,且集合版本与之前指定的一致。
内容的提问来源于stack exchange,提问作者user1870400
相关产品推荐
相关产品推荐

