ansible 由于不同主机 python 版本不同执行报错

报错内容

bash 复制代码
 ansible -i inventory/ct all -m ping
 An exception occurred during task execution. To see the full traceback, use -vvv. The error was: ModuleNotFoundError: No module named 'ansible.module_utils.six.moves'
kunlun01.ct | FAILED! => {
    "changed": false,
    "module_stderr": "Shared connection to 10.61.6.1 closed.\r\n",
    "module_stdout": "Traceback (most recent call last):\r\n  File \"/home/rhlog/.ansible/tmp/ansible-tmp-1775817189.0660183-248546-200217143631416/AnsiballZ_ping.py\", line 102, in <module>\r\n    _ansiballz_main()\r\n  File \"/home/rhlog/.ansible/tmp/ansible-tmp-1775817189.0660183-248546-200217143631416/AnsiballZ_ping.py\", line 94, in _ansiballz_main\r\n    invoke_module(zipped_mod, temp_path, ANSIBALLZ_PARAMS)\r\n  File \"/home/rhlog/.ansible/tmp/ansible-tmp-1775817189.0660183-248546-200217143631416/AnsiballZ_ping.py\", line 37, in invoke_module\r\n    from ansible.module_utils import basic\r\n  File \"/tmp/ansible_ping_payload_vcew6owj/ansible_ping_payload.zip/ansible/module_utils/basic.py\", line 176, in <module>\r\nModuleNotFoundError: No module named 'ansible.module_utils.six.moves'\r\n",
    "msg": "MODULE FAILURE\nSee stdout/stderr for the exact error",
    "rc": 1
}

python 版本

控制端

bash 复制代码
python --version
Python 3.10.12

被控制端

bash 复制代码
python --version
Python 3.12.3

解决

在控制端(执行 ansible 代码的那一端)机器上执行。

1.安装 venv

bash 复制代码
sudo apt update
sudo apt install -y python3-venv python3-full

2.创建虚拟环境

⚠️说明:用哪个用户执行 ansible 就用哪个用户创建虚拟环境。

bash 复制代码
python3 -m venv ~/ansible-venv
source ~/ansible-venv/bin/activate

3.升级 pip

bash 复制代码
(ansible-venv)~$ pip install -U pip setuptools wheel

4.安装稳定版 Ansible

⚠️说明:推荐用 core(不要用 full ansible bundle)。

bash 复制代码
(ansible-venv)~$ pip install ansible-core==2.16.6

⚠️警告:不要安装 ansible。

验证

bash 复制代码
(ansible-venv)~$ ansible --version
(ansible-venv)~$ python -c "from ansible.module_utils import basic"
bash 复制代码
(ansible-venv)~$ which python
/home/rhlog/ansible-venv/bin/python
bash 复制代码
(ansible-venv)~$ which ansible
/home/rhlog/ansible-venv/bin/ansible
bash 复制代码
(ansible-venv)~$ python --version
Python 3.10.12
bash 复制代码
(ansible-venv)~$ ansible --version
ansible [core 2.16.6]
  config file = None
  configured module search path = ['/home/rhlog/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /home/rhlog/ansible-venv/lib/python3.10/site-packages/ansible
  ansible collection location = /home/rhlog/.ansible/collections:/usr/share/ansible/collections
  executable location = /home/rhlog/ansible-venv/bin/ansible
  python version = 3.10.12 (main, Mar  3 2026, 11:56:32) [GCC 11.4.0] (/home/rhlog/ansible-venv/bin/python3)
  jinja version = 3.1.6
  libyaml = True
相关推荐
一条大祥脚15 分钟前
CuTe 与 CuTe DSL:从 C++ 模板元编程到 Python DSL 的 GPU 编程演进
开发语言·c++·python·cutlass·cute·cute dsl
10年前端老司机1 小时前
Milvus 8种检索能力实践
数据库·python·agent
Sakura_j_h_2 小时前
从零写一个 MCP stdio Server:用 Python 校验博客文章格式
开发语言·python·自动化·ai工具·mcp·json-rpc
大草原的小灰灰2 小时前
LLM应用的标准开发框架LangChain(八)- 中间件
python·中间件·langchain
卷无止境2 小时前
百万 token 时代的真相:主流大模型上下文窗口与最大输出的横向对比分析
人工智能·python
用户298698530142 小时前
Python 实战:将 HTML 批量转换为 Markdown
python·html·markdown
hhcgchpspk3 小时前
flask服务端页面预防被爬措施
后端·python·flask·网络爬虫·防爬
小小张说故事3 小时前
Python 里 copy.copy() 和 deepcopy() 到底差在哪:拆开 __copy__、__deepcopy__ 和那个防止无限递归的 memo 字典
python
vipxieliang3 小时前
Python collections:高效容器与实战案例
后端·python
青少儿编程课堂3 小时前
蓝桥杯青少组图形化 STEMA 省考(报名倒计时·11/22开考)+ 全国青少年信息素养大赛 2026—2027赛季 + 电子学会图形化考级:校园华容道大闯关
c++·python·算法·bfs·信息学竞赛