首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >缺失SimpleJson模块

缺失SimpleJson模块
EN

Stack Overflow用户
提问于 2015-04-28 06:59:47
回答 1查看 1.2K关注 0票数 0

我有一个带有CentOS版本5.6 (Final)的机器运行“Ansible剧本”。我在目标机器上安装了simplejson,模块可以从python解释器中导入。但我的剧本还是失败了,出现了下面的错误。

代码语言:javascript
复制
Error: ansible requires a json module, none found!

我正在确认由一个原始模块在运行时存在简单的json模块,如下所示。

代码语言:javascript
复制
--- 
- 
  gather_facts: false
  hosts: "{{ host_group }}"
  name: deploy
  vars_files:
    - "{{env}}.yml"
  tasks:
    - name: check python version
      raw: python -c "import simplejson"

    - name: "git checkout"
      git: "repo={{repository}} dest={{base_dir}} version={{branch}}"

第一步成功,没有任何问题,如下所示

代码语言:javascript
复制
TASK: [check python version] ************************************************** 
ok: [my-target-machine] => {"rc": 0, "stderr": "", "stdout": ""}

但是,第二个错误由于上面提到的缺少json模块的错误而失败。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-28 13:17:32

之所以会发生这种情况,是因为您有两个版本的python:/usr/bin/python上的系统python和/usr/local/bin/python上的另一个python。如果第一个路径上的python是>=2.5,或者它的站点包中有simplejson,那么第一个任务将执行得很好。但是,如果您还没有在/usr/bin/python (简单易用sudo yum -y install python-simplejson)上为系统python安装simplejson,那么git任务可能会失败。

标准的不可访问模块总是使用#!/usr/bin/python shebang,git模块也不例外。

同时,来自不可信文件

默认情况下,Ansible假设它可以在远程系统上找到一个/usr/bin/ Python,它是Python的2.X版本,特别是2.4或更高版本。 在任何主机上设置库存变量‘ansible_python_interpreter’将允许Ansible自动替换执行python模块时使用的解释器。因此,如果系统上的/usr/bin/python不指向Python2.x解释器,则可以指向系统上的任何python。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29912420

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档