Mac环境下Ansible azure_rm_virtualmachine因pip包缺失执行失败求助
我之前也碰到过这种明明装了包但Ansible就是找不到的情况,太闹心了!咱们一步步来排查解决:
检查Ansible与pip使用的Python环境是否一致
最常见的原因就是你用pip install装包的Python环境,和Ansible实际调用的不是同一个。先搞清楚Ansible依赖的Python版本:ansible --version | grep python再对比你执行
pip命令对应的Python环境:pip --version如果两个环境不一样,就用Ansible对应的pip重新安装/更新packaging,比如Ansible用的是python3,就执行:
pip3 install --upgrade packaging强制更新packaging到兼容版本
有时候虽然装了packaging,但版本太旧,和你用的Ansible 2.5.0不兼容。试试直接更新到最新稳定版:pip install --upgrade packaging装完后用
pip show packaging确认版本,确保至少是20.0以上的版本(这个版本对旧版Ansible兼容性更好)直接测试Python环境能否导入模块
咱们直接在Ansible用的Python环境里验证能不能找到这个模块,比如如果Ansible用的是python3,就运行:python3 -c "import packaging.version"如果这条命令报错,那肯定是环境的问题,得在对应环境里重新装包;如果不报错,那可能是运行Ansible的用户和装包的用户不一致,试试用sudo安装:
sudo pip install packaging或者用用户级安装(避免权限问题):
pip install --user packaging安装完整的Ansible Azure依赖包
有时候光装packaging不够,Azure模块还有一堆其他依赖,直接安装完整的依赖套餐更省心:pip install ansible[azure]这个命令会自动安装所有Azure模块需要的依赖,包括packaging和其他可能遗漏的包
内容的提问来源于stack exchange,提问作者RockyMountainHigh

