手头上有台闲置的vps,打算拿来跑个python爬虫。
系统版本为centos6.5 64位,系统自带python版本为2.6.6.
直接去python官网下载最新正式版python3.8压缩包.
解压后,编译安装,安装完以后建立python3和pip3的软链接
ln -s /usr/local/python3/bin/python3.8 /usr/bin/python3
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3
然后尝试启动下python3和pip3,都没什么问题
python3 ###输入python3可以正常启动
退出python3
exit()
pip3 -V ###查看pip版本也正常
尝试使用pip安装bs4模块
pip3 install bs4
报错了,提示ssl错误之类的问题 Caused by SSLError
百度了下,网上的答案五花八门,什么样的都有,当然我相信可能他们的问题确实是那样解决的,但是很多我看了下,显然不适用我这个,什么修改pip的配置文件啊,什么默认的pip源不可用啊这些,需要指定pip源之类的。。
后来发现一个比较靠谱的,说是编译安装的时候没有加上–with-ssl参数,需要把ssl编译进去,于是重新解压python源码包,
再次configure
先进入python源码目录,然后configure
./configure --prefix=/usr/local/python3 --with-openssl
然后make,再make install,问题依旧。
不对劲啊,应该没问题了啊,后面又查了下原因,查到一篇文章说centos6.5自带的openssl版本过低,编译安装python3.7以上版本至少需要openssl-1.0.2及以上版本,于是查看了系统中的openssl版本
rpm -qa|grep openssl
或者直接openssl version查看
发现openssl版本是openssl-1.0.1e,于是又得先编辑安装高版本的openssl,安装openssl教程请大家参考这篇教程,这里不再赘述
https://blog.51cto.com/13544424/2149473
安装好openssl以后,再把python编译安装的流程重走一遍,注意删除掉之前编译的源码,重新解压源码,重新从configure开始。
可是这一切做完以后,尝试使用pip依然有问题。。。
不过这次报错不同了,终于不再提示ssl的问题,这次报错如下
ModuleNotFoundError: No module named ‘_ctypes’
百度了下找到答案了,原来python3.7之后的版本需要一个新包libffi-devel,直接使用yum安装这个包就好了
yum install libffi-devel -y
然后再重新编译安装python,问题终于解决了,一切搞定。