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