Python是一个非常强大的工具,以前PHP的资源丰富,现在Python的资源更丰富,只需要引用扩展包,简单几句代码即可实现复杂功能,并且跨平台也较为方便。但是很多Linux系统自带的python版本比较老,我用过的几乎都是2.7.5这个版本,为了能跑上网络大神写的代码,我们有必要将python升级到3.X版本,下面是一次Centos7.2中python2.7.5升级到3.7.3并安装pip工具的完整安装过程,记录下来以便查阅。
如果想安装别的版本,请自己到python官网查找下载地址,官网:https://www.python.org
升级Python
查看当前版本
python -V
wget下载python3.7.3源码包
wget -c https://www.python.org/ftp/python/3.7.3/Python-3.7.3.tgz
解压
tar -xzvf Python-3.7.3.tgz
进入目录
cd Python-3.7.3
配置安装信息,这里直接默认,注意带上ssl支持
./configure --with-ssl
安装openssl-devel支持
yum install openssl-devel
编译并安装
make && make install
注意:如果你的运气不好,在这一步将会报错,提示信息如下:
Traceback (most recent call last): File "/root/Python-3.6.6/Lib/runpy.py", line 193, in _run_module_as_main "__main__", mod_spec) File "/root/Python-3.6.6/Lib/runpy.py", line 85, in _run_code exec(code, run_globals) File "/root/Python-3.6.6/Lib/ensurepip/__main__.py", line 5, in <module> sys.exit(ensurepip._main()) File "/root/Python-3.6.6/Lib/ensurepip/__init__.py", line 204, in _main default_pip=args.default_pip, File "/root/Python-3.6.6/Lib/ensurepip/__init__.py", line 117, in _bootstrap return _run_pip(args + [p[0] for p in _PROJECTS], additional_paths) File "/root/Python-3.6.6/Lib/ensurepip/__init__.py", line 27, in _run_pip import pip._internal zipimport.ZipImportError: can't decompress data; zlib not available make: *** [install] 错误 1
原因是缺少依赖包,安装zlib依赖即可。
yum -y install zlib zlib-devel
然后再次执行编译安装命令,自己看上面,这里不贴了。
当提示Successfully
字样时,说明安装成功。
如果不出意外,你还会看到一个关于安装pip失败的错误信息,如下:
File "/usr/local/python3/lib/python3.7/ctypes/__init__.py", line 7, in <module> from _ctypes import Union, Structure, Array ModuleNotFoundError: No module named '_ctypes'
原因是Python3中有个内置模块叫ctypes,它是Python3的外部函数库模块,它提供兼容C语言的数据类型,并通过它调用Linux系统下的共享库(Shared library),此模块需要使用CentOS7系统中外部函数库(Foreign function library)的开发链接库(头文件和链接库)。由于在CentOS7系统中没有安装外部函数库(libffi)的开发链接库软件包,所以在安装pip的时候就报了”ModuleNotFoundError: No module named ‘_ctypes’”的错误。
此时执行如下命令安装外部函数库(libffi)
yum install libffi-devel -y
安装成功后再次执行编译安装命令,仍然不贴,自己看上面。
这次应该会成功安装了,到此你的系统中就已经安装上了python3.7.3版本,但默认仍然使用python2.7.5版本,因此我们还需要如下操作,修改默认的python版本。
查看旧版python安装位置
whereis python
移动老版本
mv /usr/bin/python /usr/bin/python2.7.5
重新指定python3.7链接到python命令
ln -s /usr/local/bin/python3.7 /usr/bin/python
此时你的默认python就已经变成了3.7版本,输入如下命令查看版本
python -V
修改yum使用的python路径
vi /usr/bin/yum
将光标移至首行末尾,按“a”键,可以看到终端左下角出现–insert–字样,此时就可以插入内容了,将首行原来的#!usr/bin/python改为:
#!/usr/bin/python2.7.5
按ESC退出编辑模式后,无视光标当前的位置,直接输入”:wq”,就完成保存并退出了。这里由于我将原来的2.7.5版本从/usr/bin/python移动到了/usr/bin/python2.7.5所以这样修改,如果移动到了其他位置,就要写对应的路径。
pip更新到3.7
先移除旧版本pip
rm -f /usr/bin/pip
指定pip3.7链接到pip命令
ln -s /usr/local/bin/pip3.7 /usr/bin/pip
输入pip不报错则安装完成,你也可以安装一个常用扩展看看是否有问题。
pip install requests
原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/242496.html