python3 安装ssl编译问题

python3 编译安装时默认没有添加ssl模块,但是使用时有些库需要用到,你可以用python3进入命令行后:

import ssl

测试一下是否可以成功加载。

如果不能加载,这时需要重新编译python,进入你的python下载目录,打开Modules/Setup文件:

vim /usr/local/Python-3.7.4/Modules/Setup

然后把下面的几行注释打开:

# Socket module helper for socket(2)
_socket socketmodule.c

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

然后运行:

./configure

make

此时有可能会报错:

./Modules/_ssl.c: In function ‘SSL_SESSION_get_ticket_lifetime_hint’:

......

make *** modules/_ssl.o error 1

 

可能的两个原因:

1.  openssl的路径不对,上面打开注释的这一行:

SSL=/usr/local/ssl

可以设置openssl的路径,找到本机openssl的位置,然后修改一下试下。

2. 这个可能就是本机的openssl版本过低,导致编译失败了,可以直接用如下命令查看一下:

openssl version

我在ubuntu机器上查看还是 0.8的版本,顺便升级了一下,下载连接:

https://www.openssl.org/source/openssl-1.1.1d.tar.gz

cd /usr/local

wget https://www.openssl.org/source/openssl-1.1.1d.tar.gz

tar -zxvf openssl-1.1.1d.tar.gz

cd openssl-1.1.1d

./configure

make && make install

安装后openssl的默认路径为:

/usr/local/ssl

到上一步openssl就算安装好了,但是还无法使用,需要通过软链接的方式将新旧版本就行替换,依次运行下列命令:

sudo mv /usr/bin/openssl /usr/bin/openssl.old    //将旧版本的openssl进行备份
sudo ln -s /usr/local/bin/openssl /usr/bin/openssl    //将新版本的openssl进行软链接

新建或修改 /etc/ld.so.conf.d/libc.conf 配置文件,添加如下内容:

/usr/local/lib     //将openssl的安装路径加入配置中

然后运行如下命令:

ldconfig  //重新加载配置

此时在用openssl version命令就可以看到已经是自己安装的新版本了,这样也方便切换为老版本。

 

然后把上面打开注释中的:

SSL=/usr/local/ssl

改为

SSL=/usr/local

 

再在python源码目录下依次执行:

make clean

./configure

make && make install

就可以将ssl模块编译进来了。

 

 

 

 

 

你可能感兴趣的:(编程效率,python)