ImportError: No module named _io in ubuntu 14.04

PythonLinuxUbuntuPip

Python Problem Overview


I just fresh installed ubuntu 14.04LTS and i am trying to use pip but i am getting the following traceback:

(nlmanagement)psychok7@Ultrabook:~/code/work/nlmanagement$ pip freeze
Traceback (most recent call last):
  File "/home/psychok7/code/work/venv/nlmanagement/bin/pip", line 9, in <module>
    load_entry_point('pip==1.1', 'console_scripts', 'pip')()
  File "/home/psychok7/code/work/venv/nlmanagement/local/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/pkg_resources.py", line 337, in load_entry_point
    return get_distribution(dist).load_entry_point(group, name)
  File "/home/psychok7/code/work/venv/nlmanagement/local/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/pkg_resources.py", line 2279, in load_entry_point
    return ep.load()
  File "/home/psychok7/code/work/venv/nlmanagement/local/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/pkg_resources.py", line 1989, in load
    entry = __import__(self.module_name, globals(),globals(), ['__name__'])
  File "/home/psychok7/code/work/venv/nlmanagement/local/lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/__init__.py", line 10, in <module>
    from pip.backwardcompat import walk_packages, console_to_str
  File "/home/psychok7/code/work/venv/nlmanagement/local/lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/backwardcompat.py", line 77, in <module>
    from urllib2 import URLError, HTTPError
  File "/usr/lib/python2.7/urllib2.py", line 94, in <module>
    import httplib
  File "/usr/lib/python2.7/httplib.py", line 79, in <module>
    import mimetools
  File "/usr/lib/python2.7/mimetools.py", line 6, in <module>
    import tempfile
  File "/usr/lib/python2.7/tempfile.py", line 32, in <module>
    import io as _io
  File "/usr/lib/python2.7/io.py", line 51, in <module>
    import _io
ImportError: No module named _io

any ideas?? i have tried sudo apt-get install python3-pip and sudo apt-get install python-pip

Python Solutions


Solution 1 - Python

I had the same problem. This happened in Ubuntu - 14.04 and Virtual environment's Python version - 2.7.3

After spending a day in debugging, posting my answer here, hope it helps for future visitors.

I found that io.py is invoking _io module. I think _io module is internal to the interpreter, so, just replacing the python binary in the environment alone with the newer version should fix.

(In my case, Cloudera Manager 5.x Agent's virtualenv on ubuntu 14.04 was using python interpreter 2.7.3, replaced it with 2.7.6.

echo "Using " && python2.7 --version
mv myenv/bin/python myenv/bin/python.bak;
cp `which python2.7` myenv/bin/python

When a new virtualenv is created, it uses updated python binary from the system. Hence, that explains the accepted answer in the thread.

Solution 2 - Python

Your virtualenv became corrupt due to diffs in the Python system lib.

Best choice is to reinstall your virtualenv:

$ deactivate
$ rmvirtualenv nlmanagement
$ mkvirtualenv nlmanagement
$ pip install -r requirements.txt

Solution 3 - Python

You don't need to delete the virtual environment.

Just follow these steps.

  1. Let's say your virtual environment name is "mydev" and you are using virtualenvwrapper, do

     cd $WORKON_HOME
     virtualenv mydev
    

    The above command just upgrades the link to the python executable without losing any package. Without virtualenvwrapper, $WORKON_HOME might not be defined; then you need to change to the parent directory of the virtualenv.

  2. outside virtualenv, if your pip is not working, then just

     easy_install pip
    

    will resolve the issue.

Solution 4 - Python

After upgrading my ubuntu server to 14.04, I also have this kind of problem while executing pip

ImportError: No module named _io

Then I found out simply reinstall virtualenv can solve this issue!

sudo pip install virtualenv --upgrade

Solution 5 - Python

One cause of this is a bad "pip". See: https://bugs.launchpad.net/ubuntu/+source/python-pip/+bug/1373254

And/or it can be a problem with virtualenv: https://bugs.launchpad.net/ubuntu/+source/python2.7/+bug/1115466 Where the recommended workaround is:

  cd /usr/lib/python2.7
  ln -s plat-x86_64-linux-gnu/_sysconfigdata_nd.py .

Solution 6 - Python

You have to replace the python version in your corrupted virtualenv.

Do this:

  1. Create a new Virtualenv

     mkvirtualenv MyNewTestEnv
    
  2. Locate "python" (in my case the virtualenvs are located in the home directory)

     cd ~/.virtualenvs/MyNewTestEnv/bin
    
  3. Copy "python" from the new virtualenv into your corrupted virtualenv

     cp ~/.virtualenvs/MyNewTestEnv/bin/python ~/.virtualenvs/<yourCorruptedEnv>/bin
    

That's it. Now your CorruptedEnv should be fixed.

Solution 7 - Python

If you have installed different python versions. You must reference your python

virtualenv -p /usr/bin/python2.7 myenv

or

virtualenv -p /usr/bin/python3.x myenv

Solution 8 - Python

This workaround applies to SuSE 12.2 Downloaded python and installed it with ./configure and make install to defult /usr/local folder

Installed pip and virtualenv

When trying to create python virtual env

*linux-t69c:/nkadic # virtualenv -p python venv2*
**ImportError: No module named _struct**
or (if manually setting PYTHONPATH)
**ImportError: No module named _io**

Here is the workaround:

Check default sys.path python (do not change default PYTHONPATH)

check if there are libs dir /usr/local/lib/python2.7/lib-dynload exists

if not, create symlink to existing lib64 path:

linux-t69c:/nkadic # ln -s /usr/local/lib64/python2.7/lib-dynload/  
/usr/local/lib/python2.7/lib-dynload
linux-t69c:/nkadic # ls -ltr /usr/local/lib/python2.7/lib-dynload
lrwxrwxrwx 1 root root 39 Aug 12 21:06 /usr/local/lib/python2.7/lib-dynload -> 
/usr/local/lib64/python2.7/lib-dynload/

After this workaround "virtualenv -p python venv2" works

linux-t69c:/nkadic # virtualenv -p python venv2
Already using interpreter /usr/local/bin/python
PYTHONHOME is set.  You *must* activate the virtualenv before using it
New python executable in /nkadic/venv2/bin/python
Installing setuptools, pip, wheel...done.
linux-t69c:/nkadic # 

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
Questionpsychok7View Question on Stackoverflow
Solution 1 - PythonThamme GowdaView Answer on Stackoverflow
Solution 2 - PythonYuval AdamView Answer on Stackoverflow
Solution 3 - PythonGomesView Answer on Stackoverflow
Solution 4 - PythonkakashiView Answer on Stackoverflow
Solution 5 - PythonBryceView Answer on Stackoverflow
Solution 6 - Pythondh1twView Answer on Stackoverflow
Solution 7 - PythonmcolakView Answer on Stackoverflow
Solution 8 - PythonnkadicView Answer on Stackoverflow