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模块编译进来了。