python3.8.1安装以及python3 安装ssl编译问题

yum install libffi-devel -y
上面这个yum装不上,可以手动安装
wget http://mirror.centos.org/centos/7/os/x86_64/Packages/libffi-devel-3.0.13-19.el7.x86_64.rpm
rpm -ivh libffi-devel-3.0.13-19.el7.x86_64.rpm 
这个如果不装,后面安装过Python,执行命令会报ModuleNotFoundError: No module named '_ctypes'错误,
如果这个后装,在重新到python安装目录,重新执行make install即可


wget https://www.python.org/ftp/python/3.8.1/Python-3.8.1.tgz
tar xf Python-3.8.1.tgz 
cd Python-3.8.1
./configure
make
make install


python3 安装ssl编译问题

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

import ssl

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

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

vim  Python-3.8.1/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

升级了一下,下载连接:

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

./config

make && make install

安装后openssl的默认路径为:

/usr/local/ssl

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

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

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

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

cp libcrypto.so.1.1 /usr/local/lib

cp libssl.so.1.1 /usr/local/lib

cd  /usr/local/lib

ln -s libcrypto.so.1.1 libcrypto.so

ln -s libssl.so.1.1 libssl.so


然后运行如下命令:

ldconfig  //重新加载配置

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

 

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

SSL=/usr/local/ssl

改为

SSL=/usr/local

其他修改还跟上面一样

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

make clean

./configure

make && make install

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



分享到:

网友留言(0 条)

发表评论