以下安装基于CentOS6.5,可直接跳过3、4、5步直接看第6步。
目录
2.再运行命令 python3 查看系统是否安装python3
6.3.解决可能存在的pip命令执行失败的问题(这个最花费时间)
1.运行命令python查看系统是否安装Python
一般系统会内置Python2:
2.再运行命令 python3 查看系统是否安装python3
发现没有,根据书上提示,执行命令:
sudo add-apt-repository ppa:fkrull/deadsnakes同样无此命令:
然后一顿网上冲浪,确认书上的安装命令apt-get等为Ubuntu命令,而我的系统为CentOS6.5
3.下载安装Python3
查找到对应安装教程: https://www.centoschina.cn/course/config/11027.html,
python下载页面:https://www.python.org/ftp/python/,下载Python3到系统中
然后,解压:tar –zxvf Python-3.7.2.tgz,接下来进图Python-3.7.2文件夹,查看README.rst文件:
根据提示配置编译:
./configure --prefix=/usr/local/python372
make
make test
sudo make install
一大段blabla输出之后。。。又一次报错,报错信息:
zipimport.ZipImportError: can't decompress data; zlib not available
4.解决编译python3错误
参考https://blog.csdn.net/weixin_38063492/article/details/81782767,缺少zlib,zlib-devel及ncurses ncurses-devel依赖,安装之:
yum -y install zlib zlib-devel
yum -y install ncurses ncurses-devel
再次编译:
sudo make install
这次换了个错:
ModuleNotFoundError: No module named '_ctypes'
再次一通百度,https://blog.csdn.net/qq_36416904/article/details/79316972
原来是缺少libffi_devel,继续安装:
yum –y install libffi-devel
再次尝试编译:
sudo make install
结果还是报同样的错,根据https://www.cnblogs.com/momolei/p/9895218.html,
从./configure --prefix=/usr/local/python372 命令开始重新编译:
然后,
make
make test
sudo make install
当当当当,成功:
接下来,根据https://blog.csdn.net/qq_39265082/article/details/83060110 继续安装,需要在/usr/bin/下添加python3的软链接:
ln –s /usr/local/python372/bin/python3 /usr/bin/python3
然后,输入命令python3,输出以下内容,说明python3基本组件安装成功:
5.解决pip命令失败的记录
然后根据安装步骤输入pip命令,pip是Python的包安装工具,可以用来安装python的包索引以及其他索引:
pip is the package installer for Python. You can use pip to install packages from the Python Package Index and other indexes.
表示并没有此命令,根据官网https://pip.pypa.io/en/stable/installing/提示,下载pip,执行命令:
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
但是报错:
curl: (35) SSL connect error
(但是仔细一看说明Python3.7.2其实是已经有pip的,只需要配置下环境变量就好:
pip is already installed if you are using Python 2 >=2.7.9 or Python 3 >=3.4 )
原因是nss服务没有更新,输入命令查看nss服务版本:
rpm –aq|grep openssl
如果有,则更新: yum update nss,没有则安装:yum install nss
再次执行,那个get-pip.py就是下载的python文件:
看看,再看看目录中已经有pip3了!!!根据https://www.cnblogs.com/zmdComeOn/p/10001423.html,配置pip3的环境变量:
export PIP_HOME=/usr/local/python3
export PATH=$PATH:$PIP_HOME/bin
env命令查看环境变量已经有了
source /etc/profile使配置生效,输入命令pip3,成功:
输入pip3 install pymysql,报错:
SSL module is not available
根据:http://www.cnblogs.com/minglee/p/9232673.html,原因是只安装了openssl,openssl只包含了可执行部分,openssl-devel才包含了头文件、头文件参考、某些库文件等跟开发相关的东西。所以只安装openssl是找不到相应的头文件的:
rpm –qa|grep openssl-devel
确实没有相应的rpm包,安装:
yum –y install openssl-devel
重新安装Python3.7.2,进入/root/Python3.7.2/目录:
从./configure --prefix=/usr/local/python372开始执行。。。
无效,依然报错,再根据:http://www.windigniter.com/blog/2017/04/solution-https-ssl-not-avalilable/,这次我先删除已安装的源码包:
rm –rf /usr/local/python372
再次执行安装编译过程
./configure --prefix=/usr/local/python372 --enable-shared --enable-loadable-sqlite-extensions
。。。
添加软链接:
ln –s /usr/local/python372/bin/python3 /usr/bin/python3
输入python3命令报错:
./python3: error while loading shared libraries: libpython3.7m.so.1.0: cannot open shared object file: No such file or directory
原因是编译时启动了share:--enable-share,类库缺少libpython3.7m.so.1.0,添加到类库:
cp libpython3.7m.so.1.0 /usr/lib64/
添加PIP_HOME到环境变量:
export PIP_HOME=/usr/local/python3
export PATH=$PATH:$PIP_HOME/bin
可是在pip3 install packageName 时还是报ssl的错,打开Python3解压缩目录,查看setup.py安装文件,查找ssl,貌似是需要openssl版本在1.0.2以上:
而我打印rpm –qa|grep openssl显示的版本为1.0.1:
于是升级rpm包,yum –y update openssl,结果居然说这是最新版。。。
于是继续寻找解决办法:https://blog.51cto.com/13544424/2149473,手动下载一个openssl的版本,解压,:
wget https://www.openssl.org/source/openssl-1.1.1-pre8.tar.gz
tar –zxvf openssl-1.1.1-pre8.tar.gz
进入openssl-1.1.1-pre8
目录,编译:
cd openssl-1.1.1-pre8
./config --prefix=/usr/local/openssl no-zlib #不需要zlib
make
make install
备份原配置
mv /usr/bin/openssl /usr/bin/openssl.bak
mv /usr/include/openssl/ /usr/include/openssl.bak
配置新版openssl
ln -s /usr/local/openssl/include/openssl/ /usr/include/openssl
ln -s /usr/local/openssl/lib/libssl.so.1.1 /usr/local/lib64/libssl.so
ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
#写入openssl库文件的搜索路径
echo "/usr/local/openssl/lib" >> /etc/ld.so.conf
#使修改后的/etc/ld.so.conf生效
ldconfig -v
然后查看openssl的版本:
openssl version
然后进入python3.7.2的解压目录再次编译:
注意:需要指定openssl的安装路径,--with-openssl
./configure --prefix=/usr/local/python37 --with-openssl=/usr/local/openssl
make
make install
依然报同样的错误,查看make步骤的输出有个失败项:
于是参考https://blog.csdn.net/love_cjiajia/article/details/82254371与
https://www.the5fire.com/969.html,尝试下载libressl2.6.4以上版本,再次尝试
6.总结安装的步骤
6.1.首先,检测python3是否安装
运行命令: python3
如果显示没有此命令,则需要下载源码包,下载地址:
https://www.python.org/ftp/python/ ,选择一个版本进行下载,这里我下载的3.7.2版
下载后解压缩:tar –zxvf Python-3.7.2.tgz
6.2.安装依赖包
(可以使用rpm –qa|grep 包名 命令检测是否已存在):
yum -y install zlib zlib-devel
yum -y install ncurses ncurses-devel
(对应编译错误:zipimport.ZipImportError: can't decompress data; zlib not available)
yum –y install libffi-devel
(对应编译错误:ModuleNotFoundError: No module named '_ctypes')
yum -y install bzip2-devel python-devel sqlite-devel
yum -y install libuuid-devel readline-devel mysql-devel
yum -y install gdbm gdbm-devel tkinter
6.3.解决可能存在的pip命令执行失败的问题(这个最花费时间)
1.安装python3最可能遇到的问题就是:Can't connect to HTTPS URL because the SSL module is not available.
由于openssl版本不匹配造成的,查看Python3.7.2目录下setup.py文件,看到对openssl版本的要求必须是1.0.2或1.1以上,或者libressl2.6.3以上,而输入命令:openssl version显示版本为1.0.1,升级也没用,还是1.0.1,只有重新下载(我试过下载openssl1.1.1,不知道为什么也不行),这里我下载的libressl2.8.3:
wget https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/libressl-2.8.3.tar.gz
或者直接去官网下载https://ftp.openbsd.org/pub/OpenBSD/LibreSSL也行。
解压,进入libressl-2.8.3
目录,编译:
./configure –prefix=/usr/local/ssl
make
make install
备份原openssl配置
mv /usr/bin/openssl /usr/bin/openssl.bak
mv /usr/include/openssl /usr/include/openssl.bak
配置libressl软链接代替原openssl:
ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl
ln -s /usr/local/ssl/include/openssl /usr/include/openssl
配置lib包扫描:
cd /etc/ld.so.conf.d
新建文件
vim libressl-2.8.0.conf
#将以下行加入文件,并保存
/usr/local/ssl/lib
ldconfig -v #重新加载库文件
验证:
openssl version
6.4.安装与配置Python3
安装Python3前需要设置环境变量:
export LDFLAGS=”-L/usr/local/ssl/lib”
export CPPFLAGS=”-I/usr/local/ssl/include”
export PKG_CONFIG_PATH=”/usr/local/ssl/lib/pkgconfig”
进入Python解压目录Python3.7.2,编译Python
./configure --prefix=/usr/local/python372
make
make install
make时显示:
没有出现:
Failed to build these modules:_ssl
说明ssl应该正常了,make install,输入python3命令,检测ssl:
设置pip3的环境变量:
export PIP_HOME=/usr/local/python372
export PATH=$PATH:$PIP_HOME/bin
或者如果要在下次登录时依然生效,可将环境变量写入配置文件:
vi /root/profile
将上述的环境变量添加到文件中
或者添加pip3的软链接:
ln –s /usr/local/python372/bin/pip3 /usr/bin/pip3
测试:
OK
参考链接(排名不分先后):
https://www.centoschina.cn/course/config/11027.html
https://blog.csdn.net/weixin_38063492/article/details/81782767
https://blog.csdn.net/qq_36416904/article/details/79316972
https://www.cnblogs.com/momolei/p/9895218.html
https://blog.csdn.net/qq_39265082/article/details/83060110
https://pip.pypa.io/en/stable/installing/
https://www.cnblogs.com/zmdComeOn/p/10001423.html
http://www.cnblogs.com/minglee/p/9232673.html
http://www.windigniter.com/blog/2017/04/solution-https-ssl-not-avalilable/
https://blog.51cto.com/13544424/2149473