Yi Levin
Yi Levin

Reputation: 31

"No module named yum" centos7

my OS is CentOS Linux release 7.4.1708

First,I install anaconda for python.then I replace the default python in /usr/bin/python.

$ ll /usr/bin/python*
lrwxrwxrwx. 1 root root  7 Aug 15 03:40 /usr/bin/python -> python2
lrwxrwxrwx. 1 root root  9 Aug  9 22:10 /usr/bin/python3 -> python3.6
lrwxrwxrwx. 1 root root 29 Aug  9 22:10 /usr/bin/python2.7 -> /root/anaconda2/bin/python2.7
lrwxrwxrwx. 1 root root 29 Aug  9 21:59 /usr/bin/python3.6 -> /root/anaconda3/bin/python3.6
lrwxrwxrwx. 1 root root  9 Aug  8 23:49 /usr/bin/python2 -> python2.7


Python 2.7.15 |Anaconda, Inc.| (default, May  1 2018, 23:32:55)
[GCC 7.2.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>

so I can't use yum any more.

$ yum
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.15 |Anaconda, Inc.| (default, May  1 2018, 23:32:55)
[GCC 7.2.0]

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

I'm try to fix vi /usr/bin/yum the first line to any other python path. but it doesn't work.

also,I'm trying to reinstall python*.rpm like this:

rpm -ivh python-tools-2.7.5-68.el7.x86_64.rpm python-2.7.5-68.el7.x86_64.rpm python-libs-2.7.5-68.el7.x86_64.rpm tkinter-2.7.5-68.el7.x86_64.rpm

and reinstall yum*.rpm (I download a lot of *.rpm today...) but, still not work. anyone give me a hand? thanks!

Upvotes: 3

Views: 17880

Answers (3)

wrenashe
wrenashe

Reputation: 61

I got this problem on CentOS7 with Yum3.4.3, Python2.7.5 recently,

[root@centos64b build]# yum list 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.5 (default, Apr 11 2018, 07:36:10) [GCC 4.8.5 20150623 (Red Hat 4.8.5-28)]

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

While I did not update Python before I met this problem. Finally it is found that python site-packages libpath was not set in sys.path, so the fix here is to append the site-package libpath to sys.path in /usr/bin/yum Python script. Then yum works fine.

[build@centos64b ~]$ more /usr/bin/yum
#!/usr/bin/python
import sys
sys.path.append('/usr/lib/python2.7/site-packages')
sys.path.append('/usr/lib64/python2.7/site-packages')

Upvotes: 4

Zalatik
Zalatik

Reputation: 491

Reinstall python with

rpm -ivh --force python-2.7.5-68.el7.x86_64.rpm

Why it works. Generally rpm is tolerant to files of other packages. In your case it sees that it didn't create the link files so it skipped them on install. From man rpm we can find

--force
    Same as using --replacepkgs, --replacefiles, and --oldpackage. 
--replacefiles
    Install the packages even if they replace files from other, already installed, packages. 

With these options rpm does not care about the fact, that old files were created by someone else.

P.S. Some tips: never remove change files in /usr/bin. /bin is better place for your links. Even better add your bin directory to $PATH by adding to your .bash_profile something like this:

$PATH=/root/anaconda2/bin/python2.7:$PATH

So if something breaks, it's just a matter of removing the line from .bash_profile. And once more: always do backups, especially when working with system files.

Upvotes: 0

Bambam Deo
Bambam Deo

Reputation: 177

I found two solution for the problem on Superuser StackExchange

Solution 1

  • ln -s /etc/yum.conf /etc/yum/yum.conf

Solution 2

Remove newly installed python

  • rm /usr/bin/python

Link python with the correct version (x.y)

  • ln -s /usr/bin/pythonx.y /usr/bin/python

Upvotes: 0

Related Questions