ImportError: No module named _io in ubuntu 14.04

39,553

Solution 1

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 2

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 3

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

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

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 .
Share:
39,553
psychok7
Author by

psychok7

Software Engineer

Updated on July 14, 2022

Comments

  • psychok7
    psychok7 almost 2 years

    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

  • psychok7
    psychok7 about 10 years
    why do i have these diffs? because of the upgrade?
  • Yuval Adam
    Yuval Adam about 10 years
    @psychok7 yep, the system upgrade probably replaced some libraries.
  • Esteban
    Esteban over 9 years
    Bingo! I didn't even think of the virtualenv getting stale from the upgrade.
  • Roman
    Roman over 9 years
    It tells me that rmvirtualenv: command not found. Do I need to be in a specific directory or something? Also, what/where is requirements.txt?
  • ire_and_curses
    ire_and_curses over 9 years
    Sure, but this is a big hammer, when just copying the new 2.7 binary to the existing env is sufficient (see stackoverflow.com/a/24191303/143804).
  • Yuval Adam
    Yuval Adam over 9 years
    @ire_and_curses I prefer to have a proper clean virtualenv from scratch. Why is this a big hammer? Nothing is lost.
  • ire_and_curses
    ire_and_curses over 9 years
    That depends on how expensive your virtualenv is to recreate. In my specific case, the installation is only semi-automated through requirements.txt. There is a manual licensing step, and a manual configuration step. Also, I depend on scipy, among other things. Building scipy from scratch takes many minutes.
  • Bryce
    Bryce over 9 years
    I thought the whole point of virtualenv was to wall off the python and libraries from the OS. Why would the system python change affect anything?
  • Bryce
    Bryce over 9 years
    Trying #1 I get 'OSError: Command python -c "#!python \"\"\"Bootstra...sys.argv[1:])'
  • Bryce
    Bryce over 9 years
    After trying this I get "ImportError: No module named _sysconfigdata_nd", due to bugs.launchpad.net/ubuntu/+source/python2.7/+bug/1115466
  • Bryce
    Bryce over 9 years
    pip was not working. I eventually solved it with a symlink per bugs.launchpad.net/ubuntu/+source/python2.7/+bug/1115466
  • Thamme Gowda
    Thamme Gowda over 9 years
    That is a great question. Though the virtualenv wall off the python stuff, the _io issue is with the native libraries of interpreter itself which are plausibly not isolated, shared from system. I think, in ubuntu 14.04 some of system libraries are restructured, so the older python(2.7.3 - which with ubuntu12.04) did not work. When I checked with the newer python that came along with ubuntu14.04(just be dropping into console and do import io) it worked.
  • iurisilvio
    iurisilvio over 9 years
    I had to remove myenv/bin/python before copy. rm myenv/bin/python;cp `which python` myenv/bin/python. Thanks!
  • Houman
    Houman about 9 years
    what is mkvirtualenv ? I can't find that package on ubuntu
  • dh1tw
    dh1tw about 9 years
    checkout Virtualenvwrapper!
  • arielf
    arielf almost 9 years
    This is the only answer on this page that actually worked for me (tried them all). This upgraded the python interpreter from python 2.7.3 in the virtual-env to 2.7.6. I'm not using Cloudera manager BTW, just a vanilla Ubuntu 14.04 where the virtual env originated in 12.04 (and git cloned on 14.04). Thanks!
  • Luke Tully
    Luke Tully over 5 years
    Just came across this answer, and thought I'd add that your suggestion depends on the mkvirtualenv scripts being installed, and that you're suggesting someone destroy their virtualenv before freezing their requirements file.
  • Eugène Adell
    Eugène Adell about 4 years
    Your solution is easy and worked for me (but not the others provided). Thanks a lot.