python3安装,支持openssl,支持采集https
坑好多,特别是安装的时候,各种不匹配,服务器默认配置是python2,升级3后,采集的时候用到openssl,花了两天也没搞定各种错误,也许是对linux了解不够,openssl与python总是匹配不上,哎,最终还是莫名其妙的成功了,还是最开始的方法,用的是LibreSSL 2.8.0替代的openssl,但刚开始装上怎么都不行,后来才可以,感觉还是对linux不了解导致。
总结一下:安装python3.7
首先我的服务器linux缺少关联程序
安装 libffi-deve
yum install libffi-devel -y
如果上面安装失败则安装下面
先安装wget http://mirror.centos.org/centos/7/os/x86_64/Packages/libffi-devel-3.0.13-18.el7.x86_64.rpm
rpm -ivh libffi-devel-3.0.13-18.el7.x86_64.rpm --nodeps
安装升级openssl
python3.7的ssl模块(ssl用来采集https后缀的链接)必须用openssl并且版本必须大于等于1.02或者libressl2.64(不含)以后的版本,而默认linux的是1.01
openssl貌似有漏洞,而且试了安装确实不行,用/libressl-2.8.0来替代
安装libressl-2.8.0
wget https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/libressl-2.8.0.tar.gz
tar zxvf libressl-2.8.0.tar.gz
cd libressl-2.8.0/
./configure --prefix=/usr/local/ssllib
make
make install
cd /etc/ld.so.conf.d
新建文件
vim libressl-2.8.0.conf
#将以下行加入文件,并保存
/usr/local/ssl/liblib
ldconfig -v #重新加载库文件
把原来的命令建立新的硬连接
mv /usr/bin/openssl /usr/bin/openssl.bak
mv /usr/include/openssl /usr/include/openssl.bak
ln -s /usr/local/ssllib/bin/openssl /usr/bin/openssl
ln -s /usr/local/ssllib/include/openssl /usr/include/openssl
运行命令看是否成功
openssl version
libressl-2.8.0 成功显示
安装python3.7
wget https://www.python.org/ftp/python/3.7.1/Python-3.7.1rc2.tgz
tar zxvf Python-3.7.1rc2.tgz
cd Python-3.7.1rc2
修改 Modules/Setup,让python支持ssl
vim Modules/Setup.dist
去掉前面的#
mkdir /usr/local/python37 安装到自定义目录
./configure --prefix=/usr/local/python37 --with-ssl //要确认libressl-2.8.0 成功显示
(
注意:如果此配置显示找不到ssl则要用另一个配置
./configure --prefix=/usr/local/python37 -with-openssl=/usr/local/ssllib
在make的时候有时候就算openssl显示正确的值,但python就是显示找不到,折腾到崩溃,最后才找到办法。。。
)
make
make install
移除原来的python命令
mv /usr/bin/python /usr/bin/python_old
建立新的python命令硬连接
ln -s /usr/local/python37/bin/python /usr/bin/python
测试:
python
import ssl
不报错则表示成功
ctrl+d退出命名
安装pip
python3.7自带的有pip只用建立快捷硬连接即可
ln -s /usr/local/python37/bin/pip3 /usr/bin/pip