centos6/7系统的自带的python安装在哪里?

所涉及的centos版本是7.3,系统自带python版本为2.7.5,于是下载python2.7.13的安装包,编译安装后,使用软连接将安装bin目录下的python与'python2.7'进行绑定,然后使用get-pip.py脚本安装pip,用相同的方法与pip2.7进行绑定。这样就不影响系统原生python对其他一些软件,比如yum等。
但都遇到不知道发生了什么,导致系统中,python与python2相连,python2又与python2.7相连,导致无论输入python python2 python2.7打开的都是python2.7的shell。这样就导致yum模块不存在而无法安装软件,即便手动安装python2.7.5,然后将其绑定与python,也仍然解决不了问题。
我也找不到系统自带的python安装在什么地方,只找到/usr/lib下有一个存放site-packages的目录。求助。

报错内容

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.13 (default, Jul 14 2017, 11:11:39)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-11)]

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

阅读 11.9k
3 个回答

下载:wget http://www.python.org/ftp/pyt...
解压:tar -zxvf Python-2.7.3.tgz
进入解压缩后的文件夹:cd Python-2.7.3
编译前在/usr/local新建一个文件夹,作为python安装路径,以免覆盖老的版本:
sudo mkdir /usr/local/python2.7.3
在解压后的目录下编译安装:
./configure --prefix=/usr/local/python2.7.3 (这里报错,可能是因为没有安装gcc-c++,sudo yum -y install gcc-c++)
make
sudo make install
此时没有覆盖老版本,将原来/usr/bin/python的链接改为别的名字:
sudo mv /usr/bin/python /usr/bin/python_old
建立新版本python的链接:
sudo ln -s /usr/local/python2.7.3/bin/python2.7 /usr/bin/python
输入python,显示版本2.7.3

注意:更改默认的python版本后,yum无法运行了。
进到usr/bin目录下,sudo vi yum,修改文件,将第一行#!/usr/bin/python,改为#!/usr/bin/python_old

不要无故替换系统的 python 版本,有时候 yum 等一些工具依赖 python2
不过在最新的系统上 yum 已经使用了其他内置版本(比如我的fedora中的dnf(yum的替代工具)就使用了路径为/usr/libexec/system-python
这样的话你卸载了软件包里的python2也不会用问题
或者说你非要安装一个其他版本,最好安装到单独的用户目录,不要和系统的python产生冲突
至于系统的python在什么地方,你可以vim /usr/bin/yum,看一下第一行的shebang的路径在哪里

python多版本管理工具,推荐使用pyenv

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题