龙空技术网

Linux使用新版本的python

潇洒sword 209

前言:

如今咱们对“pythonftp主动模式”大致比较看重,同学们都想要学习一些“pythonftp主动模式”的相关知识。那么小编也在网络上搜集了一些对于“pythonftp主动模式””的相关内容,希望咱们能喜欢,咱们一起来了解一下吧!

Linux升级默认的python版本,解决默认python升级后yum无法使用的问题

实际可能需要更高版本的python,以CentOS7为例介绍下升级过程,通过源码安装。

1、查看Linux默认python版本

[root@TimeSync ~]# python -V

Python 2.7.5

[root@TimeSync ~]#

2.下载Python源码包

下载python源码包方法1:

在官网下载源码包,这里以python3.9.10

下载地址:

下载python源码包方法2:

使用wget命令下载源码

wget

3.使用yum安装编译环境

yum install -y zlib-devel bzip2-devel openssl-devel ncurses-devel gcc-c++ gcc xz

4.解压、编译、安装

tar -xvf Python-3.9.10.tar.xz -C /usr/local/

./configure

make && make install

5.查看版本

python3 -V 查看版本

python -V 查看版本

注意:虽然此时安装已经完成,但只是安装了python3的环境,默认的python环境还是python2

6.修改默认python环境

使用whereis查看python命令来源,可以看到是来自/usr/bin/python这个文件

[root@TimeSync ~]# whereis python

python: /usr/bin/python /usr/bin/python2.7 /usr/bin/python2.7-config /usr/bin/python3.6-config /usr/bin/python3.6m-config /usr/bin/python3.6 /usr/bin/python3.6m /usr/bin/python.bak /usr/bin/python3.6m-x86_64-config /usr/lib/python2.7 /usr/lib/python3.6 /usr/lib64/python2.7 /usr/lib64/python3.6 /etc/python /usr/local/bin/python3.9 /usr/local/bin/python3.9-config /usr/local/lib/python3.9 /usr/include/python2.7 /usr/include/python3.6m /usr/share/man/man1/python.1.gz

[root@TimeSync ~]#

使用 ll 命令查看这个文件的信息,通过观察发现,/usr/bin/python文件是一个软连接,它的来源是/usr/bin/python2.7这个文件

[root@TimeSync ~]# ll /usr/bin/python

lrwxrwxrwx 1 root root 16 3月 13 11:09 /usr/bin/python -> /usr/bin/python2

[root@TimeSync ~]#

[root@TimeSync ~]# ll /usr/bin/python2

lrwxrwxrwx 1 root root 9 12月 6 09:27 /usr/bin/python2 -> python2.7

[root@TimeSync ~]#

[root@TimeSync ~]# ll /usr/bin/python2.7

-rwxr-xr-x 1 root root 7144 6月 28 2022 /usr/bin/python2.7

[root@TimeSync ~]#

使用相同的方式找到python3命令的文件

[root@TimeSync ~]# whereis python3

python3: /usr/bin/python3.6-config /usr/bin/python3.6m-config /usr/bin/python3 /usr/bin/python3.6 /usr/bin/python3.6m /usr/bin/python3.6m-x86_64-config /usr/lib/python3.6 /usr/lib64/python3.6 /usr/local/bin/python3.9 /usr/local/bin/python3.9-config /usr/local/bin/python3 /usr/local/lib/python3.9 /usr/include/python3.6m /usr/share/man/man1/python3.1.gz

[root@TimeSync ~]#

[root@TimeSync ~]# ll /usr/local/bin/python3

lrwxrwxrwx 1 root root 9 3月 13 11:27 /usr/local/bin/python3 -> python3.9

[root@TimeSync ~]# ll /usr/local/bin/python3.9

-rwxr-xr-x 1 root root 17883864 3月 13 11:26 /usr/local/bin/python3.9

[root@TimeSync ~]#

7.修改软连接

删除原来的/usr/bin/python文件,切记不要删错,或者备份下

rm -f /usr/bin/python或者mv /usr/bin/python /usr/bin/python.bak

8.使用ln命令创建新的连接文件,使/usr/bin/python指到我们的python3文件

这时再查看默认python环境已经是python3.9,至此已经完成了默认python环境的修改

[root@TimeSync ~]# ln -s /usr/local/bin/python3.9 /usr/bin/python

[root@TimeSync ~]# ll /usr/bin/python

lrwxrwxrwx 1 root root 24 3月 13 13:31 /usr/bin/python -> /usr/local/bin/python3.9

[root@TimeSync ~]# python -V

Python 3.9.10

[root@TimeSync ~]#

9.解决升级后yum无法使用的问题

将默认python环境升级后,如果使用yum命令就会发现,yum无法正常使用了,报错如下:

[root@TimeSync ~]# yum

File "/usr/bin/yum", line 30

except KeyboardInterrupt, e:

^

SyntaxError: invalid syntax

[root@TimeSync ~]#

这是因为使用的yum是python2的语法写的,我们修改将默认的python环境修改为python3,就会导致使用python3的解释器去执行python2的代码,python3和python2在语法上还是有一些不同的,所以无法执行,就会导致我们的yum报错。

这也是为什么Linux会默认安装了python2,因为有很多的系统命令是使用python2开发的。

通过报错可以知道,这是/usr/bin/yum这个文件有问题,使用vim或者vi编辑器打开这个文件。

[root@TimeSync ~]# vim /usr/bin/yum

#!/usr/bin/python2

import sys

try:

import yum

从第一行可以看到解释器为/usr/bin/python,但是已经将这个文件替换成了python3,所以只需要修改这个文件的解释器为python2就好,保存退出

[root@TimeSync ~]# ll /usr/bin/python*

lrwxrwxrwx 1 root root 24 3月 13 13:31 /usr/bin/python -> /usr/local/bin/python3.9

lrwxrwxrwx 1 root root 9 12月 6 09:27 /usr/bin/python2 -> python2.7

-rwxr-xr-x 1 root root 7144 6月 28 2022 /usr/bin/python2.7

-rwxr-xr-x 1 root root 1835 6月 28 2022 /usr/bin/python2.7-config

lrwxrwxrwx 1 root root 16 3月 8 17:23 /usr/bin/python2-config -> python2.7-config

lrwxrwxrwx 1 root root 16 3月 13 11:09 /usr/bin/python.bak -> /usr/bin/python2

lrwxrwxrwx 1 root root 14 3月 8 17:23 /usr/bin/python-config -> python2-config

[root@TimeSync ~]#

使用yum命令测试,恢复正常。

标签: #pythonftp主动模式