YUM命令Python3与Python2命令不兼容问题

在执行yum命令安装Docker依赖时遇到如下错误

1
2
3
4
5
yum install -y yum-utils
File "/usr/bin/yum", line 30
except KeyboardInterrupt, e:
^
SyntaxError: invalid syntax

deepseek给出的建议:

你遇到的错误是由于使用了过时的 Python 语法。具体来说,except KeyboardInterrupt, e: 这种写法在 Python 2.x 中是有效的,但在 Python 3.x 中已经被弃用了。在 Python 3.x 中,你应该使用 except KeyboardInterrupt as e: 这种语法。

解决方法

  1. 检查 Python 版本
    首先,确认你当前使用的 Python 版本。你可以通过以下命令查看:

    1
    python --version

    如果输出是 Python 3.x,那么你需要更新 yum 脚本以适应 Python 3 的语法。

  2. 更新 yum 脚本
    如果你有权限编辑 /usr/bin/yum 文件,可以手动将 except KeyboardInterrupt, e: 修改为 except KeyboardInterrupt as e:

  3. 安装 yum 的 Python 3 版本
    如果你使用的是 CentOS 8 或更高版本,yum 已经被 dnf 取代,并且 dnf 是基于 Python 3 的。你可以尝试使用 dnf 来代替 yum

    1
    dnf install -y yum-utils
  4. **使用 Python 2 运行 yum**:
    如果你仍然需要使用 yum,并且系统中同时安装了 Python 2 和 Python 3,你可以尝试使用 Python 2 来运行 yum

    1
    python2 /usr/bin/yum install -y yum-utils
  5. 更新系统
    如果你使用的是较旧的 CentOS 版本(例如 CentOS 7),考虑升级到 CentOS 8 或更高版本,因为这些版本已经完全迁移到 Python 3。

总结:

  • 如果你使用的是 CentOS 8 或更高版本,建议使用 dnf 代替 yum
  • 如果你使用的是 CentOS 7 或更早版本,并且需要继续使用 yum,可以尝试手动修改 /usr/bin/yum 文件中的语法错误,或者使用 Python 2 来运行 yum

希望这些方法能帮助你解决问题!

检查Python环境为3

1
2
python --version
Python 3.7.0

既然你的系统中安装了 Python 3.7.0,那么 yum 脚本中的语法错误是由于 yum 脚本不兼容 Python 3 导致的。你可以尝试以下几种方法来解决这个问题:

方法 1:使用 Python 2 运行 yum

如果你的系统中同时安装了 Python 2 和 Python 3,你可以尝试使用 Python 2 来运行 yum

1
python2 /bin/yum install -y yum-utils device-mapper-persistent-data lvm2

方法 2:更新 yum 脚本

如果你有权限编辑 /bin/yum 文件,可以手动将 except KeyboardInterrupt, e: 修改为 except KeyboardInterrupt as e:

1
sudo sed -i 's/except KeyboardInterrupt, e:/except KeyboardInterrupt as e:/' /bin/yum

方法 3:使用 dnf 代替 yum

如果你使用的是 CentOS 8 或更高版本,yum 已经被 dnf 取代,并且 dnf 是基于 Python 3 的。你可以尝试使用 dnf 来代替 yum

1
sudo dnf install -y yum-utils device-mapper-persistent-data lvm2

方法 4:安装 Docker 的替代方法

如果你仍然遇到问题,可以尝试使用 Docker 的官方安装脚本来安装 Docker。

  1. 下载并运行 Docker 安装脚本

    1
    2
    curl -fsSL https://get.docker.com -o get-docker.sh
    sudo sh get-docker.sh
  2. 启动并启用 Docker 服务

    1
    2
    sudo systemctl start docker
    sudo systemctl enable docker
  3. 验证安装

    1
    sudo docker --version

方法 5:安装 Docker Compose(可选)

如果你需要使用 Docker Compose 来管理多容器应用,可以安装 Docker Compose:

  1. 下载 Docker Compose

    1
    sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
  2. 赋予可执行权限

    1
    sudo chmod +x /usr/local/bin/docker-compose
  3. 验证安装

    1
    docker-compose --version

总结

通过以上方法,你应该能够在 CentOS 系统上成功安装 Docker 和 Docker Compose。如果你在安装过程中遇到任何问题,请检查错误信息并根据提示进行修复。

尝试用方式2,更新yum脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
sudo sed -i 's/except KeyboardInterrupt, e:/except KeyboardInterrupt as e:/' /bin/yum
[root@localhost ~]# sudo yum install -y yum-utils device-mapper-persistent-data lvm2
Traceback (most recent call last):
File "/bin/yum", line 4, in <module>
import yum
ModuleNotFoundError: No module named 'yum'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/bin/yum", line 6, in <module>
print >> sys.stderr, """\
TypeError: unsupported operand type(s) for >>: 'builtin_function_or_method' and '_io.TextIOWrapper'. Did you mean "print(<message>, file=<output_stream>)"?
[root@localhost ~]#

你遇到的错误是由于 yum 脚本不兼容 Python 3 导致的。即使你修改了 except 语句的语法,yum 脚本中仍然存在其他不兼容 Python 3 的代码。

解决方法:

由于 yum 脚本不兼容 Python 3,最简单的解决方法是使用 Python 2 来运行 yum。你可以通过以下步骤来确保 yum 使用 Python 2 运行。

1. 创建 yum 的 Python 2 软链接

你可以创建一个软链接,确保 yum 使用 Python 2 运行:

1
sudo ln -sf /usr/bin/python2 /usr/bin/python

2. 安装必要的依赖

然后,再次尝试安装 yum-utilsdevice-mapper-persistent-datalvm2

1
sudo yum install -y yum-utils device-mapper-persistent-data lvm2

3. 安装 Docker

接下来,按照之前的步骤安装 Docker:

  1. 添加 Docker 的官方仓库

    1
    sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
  2. 安装 Docker

    1
    sudo yum install -y docker-ce docker-ce-cli containerd.io
  3. 启动并启用 Docker 服务

    1
    2
    sudo systemctl start docker
    sudo systemctl enable docker
  4. 验证安装

    1
    sudo docker --version

4. 安装 Docker Compose(可选)

如果你需要使用 Docker Compose 来管理多容器应用,可以安装 Docker Compose:

  1. 下载 Docker Compose

    1
    sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
  2. 赋予可执行权限

    1
    sudo chmod +x /usr/local/bin/docker-compose
  3. 验证安装

    1
    docker-compose --version

总结

通过以上步骤,你应该能够在 CentOS 系统上成功安装 Docker 和 Docker Compose。如果你在安装过程中遇到任何问题,请检查错误信息并根据提示进行修复。

最终通过创建 yum 的 Python 2 软链接解决问题。