我最近通过从源代码编译在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的默认版本。知道如何解决这个问题吗?
答案 0 :(得分:134)
关于如何在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!
答案 1 :(得分:15)
vim `which yum`
modify #/usr/bin/python to #/usr/bin/python2.4
答案 2 :(得分:5)
将/opt/python2.7/bin
放在PATH
前面的/usr/bin
环境变量中......或者只是习惯于输入python2.7
。
答案 3 :(得分: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
答案 4 :(得分:1)
ln -s /usr/local/bin/python2.7 /usr/bin/python
答案 5 :(得分:0)
如果您想试用rpm包,可以安装 基于最新的Fedora rpms的二进制包,但重新编译 对于RHEL6 / CentOS6 / ScientificLinux-6:
http://www.jur-linux.org/download/el-updates/6/
最好的问候,
Florian La Roche
答案 6 :(得分:0)
我读了一篇带有注释的文章,指出以下命令现在可以运行。我没有测试过自己,所以要小心。
$ yum install -y epel-release
$ yum install -y python36
答案 7 :(得分:0)
好的,对我来说,已修复的错误是当安装了不同版本的python且yum找不到某个.so文件并引发异常时。
yum根据错误要求2.7.5。
print(df_unique)
Variable DistinctCount
0 Gender 2
1 Function 2
2 Segment 2
对我来说,此修复程序是将/ lib64附加到LD_LIBRARY_PATH环境变量中。 相关内容是/lib64/python2.7和/lib64/python3.6。
which python gives me /usr/bin/python
python --version gives me 2.7.5
为我修复了安装了多个python版本的yum错误。
答案 8 :(得分:0)
Daniel的answer可能是最理想的选择,因为它不涉及更改OS文件。但是,我发现自己处于一种需要第三方程序通过调用usr/bin/python
来调用python的情况,但是需要Python 2.7.16,而默认的Python是2.7.5。这意味着我必须将usr/bin/python
指向2.7.16版本的Python版本,这意味着yum
无法正常工作。
我最终要做的是编辑文件/usr/bin/yum
并替换其中的shebang以使用系统默认的Python(对我而言,这意味着将#! /usr/bin/python
更改为#! /usr/bin/python2
)。但是,在运行yum
之后,出现了一个错误:
ImportError: No module named urlgrabber.grabber
我通过与/usr/libexec/urlgrabber-ext-down
中相同的方式替换了/usr/bin/yum
中的shebang来解决了这一问题。即#! /usr/bin/python
至#! /usr/bin/python2
。之后yum
开始工作。
这是一个技巧,应谨慎使用。如其他评论所述,修改OS文件应仅是最后的选择。
答案 9 :(得分:-1)
我建议更新相关脚本中的路径 (例如/ usr / bin / yum)指向你以前的Python作为解释器。
理想情况下,您希望升级yum及其关联的脚本以便它们 默认的Python安装支持。
如果无法做到这一点,上述内容完全可行并经过测试。
变化:
#!/usr/bin/python
到你的旧版本的路径,直到你可以做到 在百胜之上。
如果您有一台隔离的机器,那么您无法执行上述操作的情况 没有时间手动升级rpm或暂时无法连接 或永久保存到标准的yum存储库。