ImportError: No module named bz2 for Python 2.7.2

python, python-2.7, ubuntu

Solution

Okay, this is much easier to understand in answer form, so I'll move what I would write in my comment to this answer.

Luckily for you, you didn't overwrite the system version of python, as Ubuntu 11.10 comes with 2.7.2 preinstalled.

Your python binaries (`python` and `python2.7`) are located in `/usr/local/bin`, which is a directory where user-specific stuff is usually installed. This is fine, it means your system python is still there.

First, just try to run the system python. Type this from the command line:

/usr/bin/python -c "import bz2; print bz2.__doc__"

This should print out something like this:

λ > /usr/bin/python -c "import bz2; print bz2.__doc__"

The python bz2 module provides a comprehensive interface for
the bz2 compression library. It implements a complete file
interface, one shot (de)compression functions, and types for
sequential (de)compression.

If so, means you're fine.

So you just have to fix your `PATH`, which tells the shell where to find commands. `/usr/local/bin` is going to have priority over `/usr/local`, so there are some ways to fix this, in order of difficulty/annoyance/altering your system:

Remove the symlink `python` from `/usr/local/bin`

This will make it so that when you type `python`, it should go back to executing `/usr/bin/python`, which is an alias for the system's python 2.7.2.

sudo rm /usr/local/bin/python

Move `/usr/bin` to have higher precedence in the `PATH`

Might not be desirable if you already have stuff in `/usr/local/bin` that should have precedence over `/usr/bin`, but I'm adding this for completeness.

In your shell profile (not sure what Ubuntu's default is, but I'm using `~/.bash_profile`, you can do this:

export PATH=/usr/bin:$PATH

Remove your python install

This is extreme and the first option I presented should be your first option.

Do you really need your own version of Python? If you want isolated python environments you probably really want `virtualenv`. You can probably remove yours unless there's a reason not to.

It's going to be a little annoying though, but basically:

- Remove the `python` and `python2.7` and `pythonw` and `pythonw2.7` commands from `/usr/local/bin`.

- Remove `/usr/local/lib/python/2.7.2`

This part is not complete because I forget what else there is.

Problem

I'm using Python 2.7.2 on Ubuntu 11.10. I got this error when importing the bz2 module: `ImportError: No module named bz2` I thought the bz2 module is supposed to come with Python 2.7. How can I fix this problem? EDIT: I think I previously installed Python 2.7.2 by compiling from source. Probably at that point I didn't have libbz2-dev and so the bz2 module is not installed. Now, I'm hoping to install Python2.7 through ``` sudo apt-get install python2.7 ``` But it will say it's already installed. Is there a way to uninstall the previous Python2.7 installation and reinstall?

Original source

Related problems