Ansible lookup('dig')无法识别已安装的dnspython库求助
Ansible dig lookup提示缺少dnspython库的解决方法
问题根因
你用pip3安装的dnspython是给Python3.6用的(路径显示在/home/user/.local/lib/python3.6/site-packages),但你的Ansible实际使用的是Python3.8.3,两个版本的Python库路径不通用,所以Ansible找不到已安装的库。
解决步骤
1. 给Ansible对应的Python版本安装dnspython
直接用Python3.8的pip工具安装:
pip3.8 install dnspython --user
如果系统里没有pip3.8,先通过dnf安装:
sudo dnf install python38-pip
2. 验证Ansible的Python环境
可以先确认Ansible到底用的哪个Python解释器:
# 查看Ansible脚本的shebang行 head -n1 $(which ansible)
输出类似#!/usr/bin/python3.8就说明确实是用3.8版本,安装完库后再运行你的playbook即可正常执行。
3. 临时 workaround(不推荐长期使用)
如果不想重新安装库,可以在运行playbook时手动指定Python路径,把Python3.6的库目录加入搜索路径:
PYTHONPATH="/home/user/.local/lib/python3.6/site-packages" ansible-playbook your_playbook.yml
内容的提问来源于stack exchange,提问作者Muuraharkka
相关产品推荐
相关产品推荐

