在服务器上运行python脚本连接服务器的redis,弹出异常ModuleNotFoundError: No module named '_ssl'
其他的脚本都能正常运行,将连接redis的操作删除后,脚本也能正常跑通。
服务器上的python版本是3.11 openssl也已经安装了,版本为3.0.7

在服务器上运行python脚本连接服务器的redis,弹出异常ModuleNotFoundError: No module named '_ssl'
其他的脚本都能正常运行,将连接redis的操作删除后,脚本也能正常跑通。
服务器上的python版本是3.11 openssl也已经安装了,版本为3.0.7

关注引自免费微信小程序:皆我百晓生
看起来你在Python环境中遇到了一个ModuleNotFoundError: No module named '_ssl'的问题。这通常意味着你的Python环境缺少SSL模块,或者是Python的SSL库没有正确地链接到C语言实现的部分(即 _ssl 模块)。由于你的系统已经安装了OpenSSL,并且Python版本是3.11,理论上应该包含SSL支持。但这里有几个步骤可以帮助你排查并解决这个问题:
echo $LD_LIBRARY_PATH
如果你看到OpenSSL的路径不在输出中,你需要更新LD_LIBRARY_PATH,使其包含OpenSSL的lib目录。例如,如果你的OpenSSL位于 /usr/local/openssl/lib,则可以添加这个路径到环境变量中:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/openssl/lib
source ~/.bashrc # 使更改生效
# 卸载现有Python 3.11
sudo yum remove python3.11*
# 下载Python 3.11源码
wget https://www.python.org/ftp/python/3.11.0/Python-3.11.0.tgz
# 解压并进入目录
tar -zxvf Python-3.11.0.tgz
cd Python-3.11.0
# 配置时指定OpenSSL路径
./configure --with-openssl=/usr/local/openssl
# 编译并安装
make -j$(nproc)
sudo make altinstall
# test_ssl.py
import ssl
print(ssl.OPENSSL_VERSION)
运行此脚本:
python3.11 test_ssl.py
如果输出显示了OpenSSL的版本信息,那么问题可能已经解决了。
# 在你的项目目录中执行以下操作
rm -rf myenv
python3.11 -m venv myenv
source myenv/bin/activate
pip install redis
现在再次运行你的脚本,看是否还会有同样的错误。
如果以上步骤都无法解决问题,可能需要更深入地检查Python的构建配置和链接过程。在这种情况下,你可能需要寻求更专业的开发人员的帮助,因为这可能涉及到更复杂的系统级调试。