求助:使用Ansible安装docker-compose模块失败的解决方法
问题原因分析
- pip安装失败的原因:你使用的是Python 3.12,但旧版
docker-compose(1.29.2)依赖的PyYAML<6版本(如5.4.1)不兼容Python 3.12,编译时触发AttributeError: cython_sources错误。 - Ansible任务报错的原因:由于
docker-composePython包未安装成功,Ansible的docker_compose模块找不到所需的compose库,因此抛出ModuleNotFoundError。
解决方案
方案一:使用docker-compose CLI替代Python库(推荐)
旧版docker-compose Python包已被官方弃用,现在推荐使用Docker官方的docker-compose CLI工具。修改Ansible任务使其调用CLI而非Python库即可:
- 安装docker-compose CLI(macOS下可通过Homebrew安装:
brew install docker-compose,若已安装Docker Desktop,通常自带该工具)。 - 修改Ansible任务,添加
use_cli: true参数:
- name: stop existing common abbooom docker containers community.docker.docker_compose: project_src: ../ state: absent use_cli: true
方案二:使用兼容的Python版本安装Python库
若坚持使用Python库,需切换到支持PyYAML<6的Python版本(如3.11):
- 安装Python 3.11(macOS下:
brew install python@3.11)。 - 配置Ansible使用Python 3.11执行pip安装任务:
- name: install ansible docker-compose ansible.builtin.pip: name: docker-compose vars: ansible_python_interpreter: /opt/homebrew/bin/python3.11
也可在inventory文件中全局设置Python解释器:
[localhost] localhost ansible_python_interpreter=/opt/homebrew/bin/python3.11
内容的提问来源于stack exchange,提问作者Bogdan Dubyk
相关产品推荐
相关产品推荐

