树莓派OS编译带OpenSSL的Python3.11时_ssl模块缺失问题排查
解决Python3.11编译后无法导入_ssl模块的问题
核心问题:指定的OpenSSL路径错误
你用的./configure --with-openssl=/usr/bin/openssl指向的是OpenSSL的可执行文件,而Python编译需要的是OpenSSL开发库的安装路径(包含头文件和静态/动态库的目录),不是二进制执行文件的路径。
具体修复步骤
安装OpenSSL开发依赖包
先确保系统安装了OpenSSL的开发组件,不同发行版命令不同:- Debian/Ubuntu系:
sudo apt-get install libssl-dev - RHEL/CentOS系:
sudo yum install openssl-devel - Fedora:
sudo dnf install openssl-devel
- Debian/Ubuntu系:
使用正确的configure参数
若开发库安装在系统默认位置,无需手动指定路径,直接执行:./configure --enable-optimizations若OpenSSL是手动编译安装的非默认路径(比如
/usr/local/openssl),再指定路径:./configure --enable-optimizations --with-openssl=/usr/local/openssl检查Setup文件中的ssl配置
打开Python源码目录下的Modules/Setup文件,找到以下几行,确保没有被注释(去掉开头的#):_ssl _ssl.c \ -DUSE_SSL -I$(OPENSSL)/include -I$(OPENSSL)/include/openssl \ -L$(OPENSSL)/lib -lssl -lcrypto保存后再重新编译。
重新编译安装
先清理之前的编译残留:make clean然后编译安装(用
altinstall避免覆盖系统自带Python):make -j$(nproc) sudo make altinstall验证结果
运行Python3.11的REPL,执行import ssl,若未报错,可进一步检查版本:import ssl print(ssl.OPENSSL_VERSION)正常情况下会显示你安装的OpenSSL版本(
OpenSSL 1.1.1n 15 Mar 2022)。
内容的提问来源于stack exchange,提问作者darrenjones
相关产品推荐
相关产品推荐

