73

我安装了比 Fedora16 (python2.7) 中可用的更新版本的 python (3.2.3)

现在yum停止工作。它显示以下错误。

[root@localhost yum-3.4.3]# yum
  File "/usr/bin/yum", line 30
   except KeyboardInterrupt, e:
                           ^
SyntaxError: invalid syntax

请建议如何解决错误。这会很有帮助,因为我无法更新或安装任何软件包。

4

7 回答 7

109

因为yum不支持Python3
您可以运行 command vi /usr/bin/yum,更改/usr/bin/python/usr/bin/python2在第一行。
因此,您可以运行命令yumPython2不是Python3.

但是请注意,这将使您的设置不受支持,因此无法维护(就像您所做的那样)。将来您可能会在使用其他系统软件包时遇到其他类似的问题。
如果您想使用替代 Python 安装,请考虑将其安装/usr/local到./optpyenv

于 2015-05-09T06:56:41.870 回答
55

当用户升级到 python3 时会出现此问题,只需简单地编辑文件 --> /usr/bin/yum 并将第一行更改为 --> "#!/usr/bin/python2"

上述解决方案并不能解决所有 yum 依赖问题,最好运行以下命令。

sudo ln -s /usr/local/bin/python3 /usr/bin/python3 (将最新的python标记为python3)

sudo ln -sf /usr/bin/python2.7 /usr/bin/python (nake 2.7 作为默认 python)

谢谢,达曼

于 2018-01-02T03:01:34.557 回答
24

我猜你是从源代码安装 Python 3.2.3 并使用“make install”作为最后一个命令。该命令具有将系统安装版本命令“python”替换为新版本的不幸副作用。使用“make altinstall”不会取代“python”。

命令“python”只是“python2”的符号链接,而“python2”又是“python2.7”的符号链接。您应该能够通过执行以下命令来恢复“python”:

cd /usr/bin
sudo ln -s python2 python
于 2012-06-27T06:04:50.683 回答
8

谢谢达曼维尔!更改 /usr/bin/yum 中的行有效!

这有点离题,可能会被删除,但它可能会对某人有所帮助。

这些是我用来在 Centos 上安装 Python 3.7 并修复 yum 错误的步骤。

https://www.python.org/下载

tar -xvf
./configure --enable-optimizations

make
make install

或者

make altinstall

make altinstall 用于防止替换默认的 python 二进制文件 /usr/bin/python。

cd /usr/bin

删除当前符号链接到以前的版本

rm python

输出:rm:删除符号链接'python'?是的

找到新版本的位置

whereis python3.7
 OUTPUT: python3: /usr/local/bin/python3.7

验证这是正确的

  /usr/local/bin/python3.7 --version
  OUTPUT: Python 3.7.0

创建指向新版本位置的符号链接

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

python --version

输出:Python 3.7.0

yum 命令将显示以下错误:

  File "/bin/yum", line 30
      except KeyboardInterrupt, e:

  SyntaxError: invalid syntax

将此文件的第一行从 using python 更改为 python2

  vi /usr/bin/yum 
    #!/usr/bin/python2

参考:https ://tecadmin.net/install-python-3-7-on-centos/

于 2018-10-20T17:41:02.760 回答
2

真正的答案 - 确保您回到可支持的 python 版本(如果您正在查看此问题以解决 RHEL 7 的问题)。

cd /usr/bin
sudo unlink python
sudo ln -s python2 python
于 2020-07-29T12:44:55.740 回答
1

你的 yum 寻找 python2。让我们使用 'alternatives'在pythons2python3之间切换

  • 运行 --> sudo 替代 --config python
  • Enter 以保留当前选择[+],或输入选择编号:

如果你不配置它。怎么做?

  • sudo 替代品 --install /usr/bin/python python /usr/local/bin/python3.8 60

  • sudo 替代品 --install /usr/bin/python python /usr/bin/python2 50

于 2021-07-27T02:48:03.190 回答
0

这只是一个二进制链接问题。您可以/usr/bin/python2从任何系统复制工作并复制到当前系统位置/usr/bin/python2

#cd /usr/bin

#ln -s python2 python
于 2021-04-10T05:51:02.343 回答