linu系统python2.7升级到python3.6

linu系统python2.7升级到python3.6

  • 作者:Geticsen
  • 时间:2020-04-20
  • 517人已阅读
简介 python系统中升级python2为python3

一般的linux系统都会自带python环境,默认都是python2.7,但是python2.7已经不开源,不维护了,并且python3已经成为主流。学习python或者从事python工作当然要在python3环境下敲代码。

在linux系统里,python2和python3可以共存,但是不要试图删除旧版本的python2,因为linux的一些工具依赖python2.7。不是高人切不可删除。

一、安装python3

1、wget https://www.python.org/ftp/python/3.6.3/Python-3.6.3.tgz   下载python
2、tar zxvf Python-3.6.3.tgz  解压
3、cd Python-3.6.3  
4、./configure --prefix=/usr/local/python3.6 
5、指定安装路径
6、make 编译
7、make install  安装

按照步骤应该没什么问题,在命令行输入python看看版本。
可是依然显示python2.7。

我们需要改变这种默认。为新安装的python3建立软链接

mv /usr/bin/python /usr/bin/python.bak  删除原来指向python2的软链接

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

现在你输入python 就可以看到是 python3了。


二、安装pip3

yum install python3-pip

如果安装失败使用下面的命令安装

 yum --enablerepo=epel install python-pip

再执行刚才的安装命令。

2、此时不出问题就安装成功了,但是安装的pip3版本太旧是pip 8.1.1版本的需要更新一下版本

pip3 install --upgrade pip

3、更新的版本是pip 18.0,但是用pip3 install xxx安装东西的时候会报错

ImportError: cannot import name 'main'

解决方案:

修改pip3文件
vim /usr/bin/pip3

打开后面三行是这样的:

from pip import mainif __name__ == '__main__':
    sys.exit(main())

改成这样保存退出

from pip import mainif __name__ == '__main__':
    sys.exit(__main__.main())

退出linux终端然后再连接就可以用pip3了。

如此这般折腾,用pip3 install scrapy 安装的scrapy的运行环境就是python3了。

这里会出一些问题如下:

[root@izwz91hy9bb3wjpnoclgmiz Python-3.6.3]# yum --enablerepo=epel install python-pip
  File "/usr/bin/yum", line 30
    except KeyboardInterrupt, e:
                            ^
SyntaxError: invalid syntax

原因:

这是因为yum采用python作为命令解释器,原来系统自带的python解释器为python2.7,然后我之前为了方便将python默认的解释器设为了python3.6,导致按python3.6解析2.7的语法出错了。

解决方法:

修改/usr/bin/yum文件中的第一行为的

#!/usr/bin/python    ->      #!/usr/bin/python2.7

更改之后如下

#!/usr/bin/python2.7
import sys
try:
    import yum
except ImportError:
    print >> sys.stderr, """\
There was a problem importing one of the Python modules
required to run yum. The error leading to this problem was:

   %s

Please install a package which provides this module, or
verify that the module is installed correctly.

It's possible that the above module doesn't match the
current version of Python, which is:
%s

If you cannot solve this problem yourself, please go to 
the yum faq at:
  http://yum.baseurl.org/wiki/Faq
  
""" % (sys.exc_value, sys.version)
    sys.exit(1)

sys.path.insert(0, '/usr/share/yum-cli')
try:
    import yummain
    yummain.user_main(sys.argv[1:], exit_code=True)
except KeyboardInterrupt, e:
    print >> sys.stderr, "\n\nExiting on user cancel."
    sys.exit(1)

你在你服务器选一个低版本的python就行

接下来你yum安装东西依然会有问题

[root@izwz91hy9bb3wjpnoclgmiz Python-3.6.3]# yum --enablerepo=epel install python-pip
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
Resolving Dependencies
--> Running transaction check
---> Package python2-pip.noarch 0:8.1.2-5.el7 will be updated
---> Package python2-pip.noarch 0:8.1.2-12.el7 will be an update
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================================================================
 Package                          Arch                        Version                           Repository                 Size
================================================================================================================================
Updating:
 python2-pip                      noarch                      8.1.2-12.el7                      epel                      1.7 M

Transaction Summary
================================================================================================================================
Upgrade  1 Package

Total download size: 1.7 M
Is this ok [y/d/N]: y
Downloading packages:
Delta RPMs disabled because /usr/bin/applydeltarpm not installed.
  File "/usr/libexec/urlgrabber-ext-down", line 28
    except OSError, e:
                  ^
SyntaxError: invalid syntax

Exiting on user cancel

解决如下:

yum provides '*/applydeltarpm'
vim /usr/libexec/urlgrabber-ext-down

与修改yum文件一样修改/usr/libexec/urlgrabber-ext-down文件将第一行#! /usr/bin/python 修改为#! /usr/bin/python2.7

#! /usr/bin/python2.7
#  A very simple external downloader
#  Copyright 2011-2012 Zdenek Pavlas
#   This library is free software; you can redistribute it and/or
#   modify it under the terms of the GNU Lesser General Public
#   License as published by the Free Software Foundation; either
#   version 2.1 of the License, or (at your option) any later version.
#
#   This library is distributed in the hope that it will be useful,
#   but WITHOUT ANY WARRANTY; without even the implied warranty of
#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
#   Lesser General Public License for more details.
#
#   You should have received a copy of the GNU Lesser General Public
#   License along with this library; if not, write to the
#      Free Software Foundation, Inc.,
#      59 Temple Place, Suite 330,
#      Boston, MA  02111-1307  USA

保存后退出

现在yum就可以用了


文章评论


    2020-09-11糖糖(金牌售后)

    需要单号,找单号无忧www.dh5u.com

    回复
Top