ImportError: No module named _io in ubuntu 14.04
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.
Let's say your virtual environment name is "mydev" and you are using
virtualenvwrapper
, docd $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.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 .
Comments
-
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
andsudo apt-get install python-pip
-
psychok7 about 10 yearswhy do i have these diffs? because of the upgrade?
-
Yuval Adam about 10 years@psychok7 yep, the system upgrade probably replaced some libraries.
-
Esteban over 9 yearsBingo! I didn't even think of the virtualenv getting stale from the upgrade.
-
Roman over 9 yearsIt tells me that
rmvirtualenv: command not found
. Do I need to be in a specific directory or something? Also, what/where isrequirements.txt
? -
ire_and_curses over 9 yearsSure, 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 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 over 9 yearsThat 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 over 9 yearsI 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 over 9 yearsTrying #1 I get 'OSError: Command python -c "#!python \"\"\"Bootstra...sys.argv[1:])'
-
Bryce over 9 yearsAfter trying this I get "ImportError: No module named _sysconfigdata_nd", due to bugs.launchpad.net/ubuntu/+source/python2.7/+bug/1115466
-
Bryce over 9 yearspip was not working. I eventually solved it with a symlink per bugs.launchpad.net/ubuntu/+source/python2.7/+bug/1115466
-
Thamme Gowda over 9 yearsThat 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 doimport io
) it worked. -
iurisilvio over 9 yearsI had to remove
myenv/bin/python
before copy.rm myenv/bin/python;cp `which python` myenv/bin/python
. Thanks! -
Houman about 9 yearswhat is
mkvirtualenv
? I can't find that package on ubuntu -
dh1tw about 9 yearscheckout Virtualenvwrapper!
-
arielf almost 9 yearsThis 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 over 5 yearsJust 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 about 4 yearsYour solution is easy and worked for me (but not the others provided). Thanks a lot.