升级python而不打破yum

问题描述 投票:52回答:8

我最近通过源代码编译在CentOS机器上安装了Python 2.7.3。 Python 2.7.3安装在/opt/python2.7上,当我安装它时,我刚刚更改了/ usr / bin / python以指向新版本。这显然是错误的,因为当我这样做时它打破了百胜。我会得到以下内容。

There was a problem importing one of the Python modules
required to run yum. The error leading to this problem was:

   No module named yum

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:
2.7.3 (default, May 15 2012, 17:45:42) 
[GCC 4.4.4 20100726 (Red Hat 4.4.4-13)]

If you cannot solve this problem yourself, please go to 
the yum faq at:
  http://yum.baseurl.org/wiki/Faq

我将/ usr / bin / python更改为指向python 2.6.6,但现在2.6.6是python的默认版本。知道如何解决这个问题吗?

python centos yum
8个回答
135
投票

我已经写了一篇关于如何在CentOS 6和CentOS 7上安装最新版本的Python 2和Python 3的quick guide。它目前涵盖了Python 2.7.13和Python 3.6.0。

您不应该更改Python的系统版本,因为它会破坏系统(正如您所发现的那样)。只要保留原始系统版本,安装其他版本就可以正常工作。这可以通过在运行configure时使用自定义前缀(例如/usr/local)以及在安装Python构建时使用make altinstall(而不是正常的make install)来实现。

只要您记得键入包括版本号的全名(例如“python2.7”或“pip2.7”),就可以使用多个版本的Python。如果您使用virtualenv完成所有Python工作,则会为您处理版本控制,因此请确保安装并使用virtualenv!


14
投票
vim `which yum`
modify #/usr/bin/python to #/usr/bin/python2.4

5
投票

/opt/python2.7/bin放在PATH前面的/usr/bin环境变量中......或者只是习惯于输入python2.7


2
投票

pythonz,pythonbrew的活跃分叉,使这变得轻而易举。您可以安装以下版本:

# pythonz install 2.7.3

然后设置一个符号链接:

# ln -s /usr/local/pythonz/pythons/CPython-2.7.3/bin/python2.7 /usr/local/bin/python2.7
# python2.7 --version
Python 2.7.3

1
投票
ln -s /usr/local/bin/python2.7 /usr/bin/python

0
投票

如果你想试用rpm包,可以根据最新的Fedora rpms安装二进制包,但是在RHEL6 / CentOS6 / ScientificLinux-6上重新编译:

http://www.jur-linux.org/download/el-updates/6/

最好的祝福,

Florian La Roche


0
投票

我读了一篇评论,说明现在可以运行以下命令。我没有测试过自己,所以要小心。

$ yum install -y epel-release
$ yum install -y python36

-1
投票

相反,我建议更新相关脚本中的路径(例如/ usr / bin / yum)以指向您之前的Python作为解释器。

理想情况下,您希望升级yum及其关联的脚本,以便安装的默认Python支持它们。

如果不可能,上述内容完全可行并经过测试。

更改:

#!/usr/bin/python

无论您的旧版本的路径是什么,直到您可以进行上述yum改进。

如果您有一台隔离的机器,没有时间手动升级rpm或无法临时或永久连接到标准yum存储库,则无法执行上述操作的情况。

© www.soinside.com 2019 - 2024. All rights reserved.