linux下升级python3

来源:互联网 发布:wine mac 中文 编辑:程序博客网 时间:2024/05/22 03:51

  • 查看本地python版本
  • 提前填坑做好准备
  • 下载要安装的python版本
  • 解压
  • 安装配置
  • 编译安装
  • 验证
  • 设置默认版本
  • 配置yum和pip

最近购了一年的阿里云服务器,配的操作系统是CentOS 7.2 64位,默认安装了python,不过版本是2.7.5,没有配python3.5,python3还是很好用的,那我自然不能忍受了。
以下便是升级python3的过程以及一些坑。


查看本地python版本

如果安装了python,则可以使用以下命令查看其版本是多少(选任意一条都行):

python -Vpython --version

提前填坑,做好准备

先把安装python3过程中需要的其他资源安装,免得中途心烦。

  • 需要安装gcc,需要用其编译。
yum install gcc
  • 安装openssl-devel,否则pip会安装失败。
yum install openssl-devel

下载要安装的python版本

这里我安装的自然就是python3版本啦,更多的版本可以自行前往python官网查看。
这里我选的版本是python3.5.2,今年3月推出了python3.6,不过不知道稳定性如何,等其他人踩完坑再升级,3.5够用啦。

输入下述命令进行下载【下载慢可自行换其他源下】

wget https://www.python.org/ftp/python/3.5.2/Python-3.5.2.tgz

解压

下载完自然就是解压了【废话】,先自己去到想要存放python3的目录,再进行解压。

迁移: mv Python-3.5.2.tgz XXX [XXX为你想要安装的目录位置]解压: tar -zxvf Python-3.5.2.tgz

安装配置

解压后,进入解压后的文件目录,进行安装配置

cd Python-3.5.2/./configure 

注意,如果执行./configure报错:

configure: error: no acceptable C compiler found in $PATH

那就是在第二步提过的一个坑,那时候没安装gcc的话,莫慌,现在安装gcc也来得及。

yum install gcc

安装后再来一遍 “./configure ”即可。

编译安装

走到这一步就差不多了,编译下安装下即可。

编译: make 安装: make install 

注意,可能又会闹脾气报错了:

Ignoring ensurepip failure: pip 8.1.1 requires SSL/TLS

这是因为SSL没有安装。执行以下:

yum install openssl-devel

验证

通过第一步查看python版本即可。

# python -VPython 2.7.5# python3 -VPython 3.5.2

说明python3.5已经安装成功了。这时候系统就有两个版本的python了,一个是2.7,另一个是3.5。

tip: 实际开发中,可能还需要更多不一样的python版本,比如这个工程项目需要python2.7,另一个项目要python3.1,还有一个要python3.5,等等,那咋整,全都安装在系统环境中那还得了,这么混乱。因此,一个较好的解决方法是采用虚拟环境,比如virtualenv
每个应用可能需要各自拥有一套“独立”的Python运行环境。virtualenv就是用来为一个应用创建一套“隔离”的Python运行环境。
具体virtualenv的使用就不展开说明了,挺简单的,百度谷歌看下即可。

设置默认版本

执行以上步骤,已经可以使用python3开发了,不过系统默认的还是python2,具体可看:

# ls -al /usr/bin | grep pythonlrwxrwxrwx.  1 root root          7 830 12:11 python -> python2lrwxrwxrwx.  1 root root          9 830 12:11 python2 -> python2.7-rwxr-xr-x.  1 root root       7136 1120 2015 python2.7

看到这里就明白了,当我们使用命令 python的时候,它指向的是python2,而python2指向的是python2.7,这就是python默认的是python2.7的原因。
因此想要设置python3为默认版本,只要修改python的指向即可。

首先还是保留原来的链接,将原来 python 的软链接重命名。

mv /usr/bin/python /usr/bin/python.bak

再将 python 链接至 python3:

ln -s /usr/local/bin/python3 /usr/bin/python

现在你应该也知道了,使用python命令应该指向python3了。
验证一下:

# python -VPython 3.5.2# python2 -VPython 2.7.5

因此python的默认版本就是python3了,想用python2就使用命令”python2”即可。

配置yum和pip

配置完python的默认版本后,如果就这么结束了,就会留下一些隐患,日后总要偿还的。

  • yum不可用
    升级 Python 之后,由于将默认的 python 指向了 python3,yum 不能正常使用,需要编辑 yum 的配置文件:
vi /usr/bin/yumvi /usr/libexec/urlgrabber-ext-down

要修改上述两个文件,分别在两个文件的第一行,将 “#!/usr/bin/python” 改为 “#!/usr/bin/python2.7”,“:wq”保存退出即可。
这样yum使用的还是python2.7,yum就可以继续使用了。

  • pip不可用
# pip -V......raise VersionConflict(dist, req).with_context(dependent_req)pkg_resources.VersionConflict: (pip 9.0.1 (/usr/local/lib/python3.5/site-packages), Requirement.parse('pip==7.1.0'))# pip3 -V9.0.1 from /usr/local/lib/python3.5/site-packages (python 3.5)

会发现原来的pip不可用了,肯定也是将python指向了python3而没有修改其他配置导致的。

首先进入python2目录内,并查看pip文件

cd /usr/binls -al | grep pip-rwxr-xr-x  1 root root        284 613 22:52 pip-rwxr-xr-x  1 root root        286 613 22:53 pip2-rwxr-xr-x  1 root root        290 613 22:53 pip2.7

打开任意一个,第一行是:

#!/usr/bin/python

这样就明白了,和yum是同个道理,因此分别修改三个文件的第一行,将 “#!/usr/bin/python” 改为 “#!/usr/bin/python2.7”即可。
注意这里修改后,只是让pip命令可用,具体使用 pip还是python2的,pip3才是python3的。

到这里,升级任务就算是结束了,是否还有其他问题暂且也没遇到,不过处理方法大致跟这两个一样即可。