Centos 7.6安装python 3.7.2

aliyun Centos 7自带python 2.7.5的版本。要想使用最新版的python 3.7.2需要自行安装。阿里云的yum源目前只有python 3.6的版本,所以需要自行到python官网下载3.7.2的安装包进行编译安装。

这篇文章主要是总结下安装过程中我遇到的坑以及解决方法。


安装过程:

1.首先到官网下载python3.7.2

wget https://www.python.org/ftp/python/3.7.2/Python-3.7.2.tar.xz

2.解压压缩包

tar -xvf Python-3.7.2.tar.xz

3.安装依赖包(重要)

yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel libffi-devel tk-devel gcc make

4.进入解压后的目录编译安装

cd Python-3.7.2
./configure
make && make install

./configure是源代码安装的第一步,主要的作用是对即将安装的软件进行配置,检查当前的环境是否满足要安装软件的依赖关系。如果系统环境合适,就会生成makefile,否则会报错。

生成makefile后make 和make install命令才可以执行。

用官方安装包编译安装默认安装pip3

编译安装好后会在/usr/local/bin自动创建好python3的软链接。不用自行再创建。

注:By default, `make install’ will install all the files in
`/usr/local/bin’, `/usr/local/lib’ etc. You can specify
an installation prefix other than `/usr/local’ using `–prefix’,
for instance `–prefix=$HOME’.
默认情况下,./configure时如果你不用–preix指定安装目录(指定前需要新建对应的目录,否则会报错),则执行make install后会把文件安装在/usr/local/bin 和 /usr/local/lib 目录下,./configure后如果不确定会安装在哪里可以查看Makefile文件进行确认。

5.安装完后测试

输入python3后进入python3的版本

输入python或python2进入python2版本

pip同理。

测试无问题则安装成功。后期pip install时注意区分好版本。


遇到的坑:

1.官方的Python-3.7.2.tar.xz压缩安装包是用cvf参数压缩的,解压的时候要使用xvf参数。

补充知识:tar包压缩的时候用cvf参数,解压的时候用xvf参数
                     或压缩的时候用czvf参数,解压的时候用xzvf参数
                     bz 包遇到了,就把z参数换成相应j参数

2.依赖包未安装完全。

第一次安装时我在执行完make&&make install之后出现了

“ModuleNotFound:No module named '_ctypes'” 报错。

原因是未安装 libffi-devel 依赖包。

执行

yum install libffi-devel

进行安装。

3.执行./configure –preix=/usr/bin/python3 时忘记创建相应目录一直显示命令错误。

一开始不清楚这个命令是干嘛的,所以一直不知道怎么回事,后来弄明白命令作用后直接去掉了指定目录参数,安装在默认目录中即可。安装过程中有说明。如果要指定目录安装一定要记得提前创建好目录。安装完后记得在usr/local/bin或者/usr/bin下创建软链接方便使用。


再补充一个知识:

关于/usr/bin/usr/local/bin/的区别总结:

首先注意usr 指 Unix System Resource,而不是User

然后通常/usr/bin下面的都是系统预装的可执行程序,会随着系统升级而改变

/usr/local/bin目录是给用户放置自己的可执行程序的地方,推荐放在这里,不会被系统升级而覆盖同名文件

如果两个目录下有相同的可执行程序,谁优先执行受到PATH环境变量的影响,比如我的一台服务器的PATH变量为

echo $PATH

/usr/lib64/qt-3.3/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/dean/bin

这里/usr/local/bin优先于/usr/bin

Related Posts

kali下Nmap插件编写之MySQL写库并利用golang显示信息

Nmap作为一款强大的网络扫描

关于防火墙策略梳理的一些总结

之前在帮客户做防火墙策略梳理的

关于win10开机启动项的一些操作

前一阵子需要在win 10中加

发表回复