在Linux系统搭建Python3环境

 

以下安装基于CentOS6.5,可直接跳过3、4、5步直接看第6步。

目录

 

1.运行命令python查看系统是否安装Python

2.再运行命令 python3 查看系统是否安装python3

3.下载安装Python3

4.解决编译python3错误

5.解决pip命令失败的记录

6.总结安装的步骤

6.1.首先,检测python3是否安装

6.2.安装依赖包

6.3.解决可能存在的pip命令执行失败的问题(这个最花费时间)

6.4.安装与配置Python3


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

https://blog.csdn.net/love_cjiajia/article/details/82254371

https://www.the5fire.com/969.html

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值