nor*_*ori 3 python pip ansible ansible-playbook
我在 Python3 和 Enterprise Linux 8 (Rocky Linux 8) 之上使用 Ansible。
当我尝试使用 时json_query
,出现以下错误:
fatal: [ansible]: FAILED! => {"msg": "You need to install \"jmespath\" prior to running json_query filter"}
Run Code Online (Sandbox Code Playgroud)
但 Python 模块似乎已经安装:
# dnf install python3-jmespath
Last metadata expiration check: 1:44:38 ago on Mi 02 Nov 2022 12:54:28 CET.
Package python3-jmespath-0.9.0-11.el8.noarch is already installed.
Dependencies resolved.
Nothing to do.
Complete!
# pip3 install jmespath
WARNING: Running pip install with root privileges is generally not a good idea. Try `pip3 install --user` instead.
Requirement already satisfied: jmespath in /usr/lib/python3.6/site-packages
Run Code Online (Sandbox Code Playgroud)
我jmespath
在交互式Python解释器中进行了测试,它运行正确,没有错误。这似乎证实了 Python 模块已安装并且工作正常。
看来只有使用 Ansible 时才会出现这个问题。
这是我用于测试的剧本:
---
- name: test json_query
hosts: ansible
vars:
data:
list1:
one:
name: "hello"
two:
name: "world"
tasks:
- name: search variable
ansible.builtin.debug:
var: item
loop: "{{ data | community.general.json_query('list1[*].name') }}"
Run Code Online (Sandbox Code Playgroud)
我缺少什么?
我能够弄清楚。
# pip3.8 install jmespath
WARNING: Running pip install with root privileges is generally not a good idea. Try `pip3.8 install --user` instead.
Collecting jmespath
Installing collected packages: jmespath
Successfully installed jmespath-1.0.1
Run Code Online (Sandbox Code Playgroud)
解释:
本系统安装了两个版本的python3:
python3.6 似乎是该系统上 Python 的默认版本:
# python3 --version
Python 3.6.8
# which python3.8
/bin/python3.8
Run Code Online (Sandbox Code Playgroud)
看起来:
jmespath
两个版本需要分别安装该模块。运行上述pip3.8
命令后,错误消失。
归档时间: |
|
查看次数: |
17925 次 |
最近记录: |