200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > python3.6源码编译安装 解决SSL报错

python3.6源码编译安装 解决SSL报错

时间:2024-06-17 06:48:11

相关推荐

python3.6源码编译安装  解决SSL报错

从源码编译安装python3.6之后,用pip的时候可能会提示SSL错误,实际上是openssl和python的安装有问题,本文给出安装openssl和python3.6.6的完整过程。

1、编译安装openssl

首先说明在python3.6编译的时候没有 --with-ssl 这个参数,python3.6.6源码中setup.py中有下面几行:

# Detect SSL support for the socket module (via _ssl)search_for_ssl_incs_in = ['/usr/local/ssl/include','/usr/contrib/ssl/include/']ssl_incs = find_file('openssl/ssl.h', inc_dirs,search_for_ssl_incs_in)

这说明了编译的时候会在/usr/local/ssl的子路经中寻找ssl的头文件,所以使用参数--prefix将openssl安装在/usr/local/ssl即可。

(1) 首先解压文件,然后进入openssl源码目录,按下面的命令进行编译安装

./config --prefix=/usr/local/ssl

sudo make

sudo make install

(2)添加动态链接库路径

打开文件 /etc/ld.so.conf

在文件末尾添加ssl动态链接库的路径/usr/local/ssl/lib

sudo ldconfig

ldconfig -p | grep libssl.so.3 # 查看动态链接库是否存在

2、编译安装python3.6.6

(1) 编译安装

在python源码目录中执行下面的命令

sudo ./configure --prefix=/opt/python3.6.6

sudo make

sudo make install

安装结束后将 /opt/python3.6.6/bin下的python3.6和pip3.6软链到/usr/bin即可。

(2)安装验证

执行 sudo pip3.6 install onnx 测试pip是否正常,如果出现下面的错误,尝试执行下面第(3)步的文件修改,并重新编译安装。

Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError("Can't connect to HTTPS URL because the SSL module is not available.",)':

(3) 解压并进入源码目录

修改文件Modules/Setup,将下面所示的4行注释去掉(第209到212行)。网上有的文章说还需要修改Setup.dist,实际上我只修改了Setup,目前使用场景下没有出现问题。

207 # Socket module helper for SSL support; you must comment out the other208 # socket line above, and possibly edit the SSL variable:209 SSL=/usr/local/ssl210 _ssl _ssl.c \211 -DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \212 -L$(SSL)/lib -lssl -lcrypto

有任何问题欢迎留言交流。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。