Fedora35安装Azure CLI遇Python3.9 _ssl模块缺失问题求助
解决Fedora 35上Azure CLI运行时的
_ssl模块缺失问题 问题根源
之前手动删除源码安装的Python 3.9不彻底,残留的/usr/local/lib/python3.9等文件与DNF安装的系统版Python 3.9冲突。系统版Python 3.9自带完整的_ssl模块,但Azure CLI误加载了未正确编译ssl模块的残留源码版Python,导致报错。
修复步骤
1. 彻底清理残留的Python 3.9文件
首先定位所有/usr/local下的Python 3.9残留文件:
find /usr/local -name "*python3.9*"
删除这些残留文件(注意不要误删系统包安装的文件,系统文件通常在/usr/lib、/usr/bin下):
sudo rm -rf /usr/local/lib/python3.9 /usr/local/bin/python3.9 /usr/local/include/python3.9
2. 修复系统版Python 3.9的完整性
重新安装系统提供的Python 3.9相关包,确保依赖(包括ssl模块)完整:
sudo dnf reinstall python3.9 python3.9-libs python3.9-openssl
验证ssl模块是否正常:
/usr/bin/python3.9 -c "import ssl; print(ssl.OPENSSL_VERSION)"
如果能输出OpenSSL版本号,说明模块已正常加载。
3. 确保Azure CLI调用正确的Python版本
检查Azure CLI默认调用的Python路径:
which az # 查看az脚本开头的shebang行 head -n 1 $(which az)
如果shebang是#!/usr/bin/env python3.9,确保PATH中/usr/bin优先级高于/usr/local/bin(系统默认通常是这样),或者直接修改shebang为#!/usr/bin/python3.9,强制使用系统版Python:
sudo sed -i '1s/.*/#!/usr\/bin\/python3.9/' $(which az)
最后测试Azure CLI:
az --version
同类问题通用修复思路
- 优先使用系统包管理器:避免源码安装与系统包的版本冲突,系统包会自动处理依赖(如
openssl-devel),确保模块完整性。 - 定位问题Python版本:用
python3.x -c "import sys; print(sys.executable)"确认当前调用的Python路径,判断是否是残留的有问题版本。 - 修复模块缺失:系统包安装的Python,通过
dnf reinstall重装对应包;源码安装的Python,需先安装依赖开发库(如openssl-devel)后重新编译。 - 清理冲突残留:彻底删除非系统包安装的文件,避免路径优先级导致的错误加载。
内容的提问来源于stack exchange,提问作者Robbie
相关产品推荐
相关产品推荐

