这个问题通常是因为Python编译时没有正确链接到系统的OpenSSL库。虽然系统里有OpenSSL,但Python的_ssl模块需要重新编译才能正常工作。
解决方案:
- 先确认问题:
python -c "import ssl; print(ssl.OPENSSL_VERSION)"
如果报错ModuleNotFoundError: No module named '_ssl',说明_ssl模块确实缺失。
- 重新编译Python(这是最可靠的解决方法):
# 先安装必要的开发包
sudo apt-get update
sudo apt-get install -y libssl-dev openssl
# 进入Python源码目录
cd /path/to/python/source
./configure --with-openssl=/usr --with-openssl-rpath=auto
make clean
make -j$(nproc)
sudo make altinstall
关键点:
--with-openssl=/usr 确保Python能找到OpenSSL
make altinstall 避免覆盖系统Python
- 如果OpenSSL不在
/usr,改成实际路径,比如--with-openssl=/usr/local/ssl
- 快速验证:
python3.x -c "import ssl; print('SSL模块正常:', ssl.OPENSSL_VERSION)"
总结:重新编译Python并确保正确链接OpenSSL库。