ImportError:在ubuntu 14.04中没有名为_io的模块

我只是新鲜安装的Ubuntu 14.04LTS,我想使用点子,但我得到以下回溯:

(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 

有任何想法吗?? 我试过sudo apt-get install python3-pipsudo apt-get install python-pip

你的virtualenv由于在Python系统库中的差异而变得腐败。

最好的select是重新安装你的virtualenv:

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

我有同样的问题。 这发生在Ubuntu – 14.04和虚拟环境的Python版本 – 2.7.3

花了一天的时间在debugging后,在这里张贴我的答案,希望对未来的访问者有所帮助。

我发现io.py正在调用_io模块。 我认为_io模块是解释器的内部,所以,只需在新版本中更换环境中的python二进制文件即可解决。

(就我而言,Cloudera Manager 5.x Agent在ubuntu 14.04上的virtualenv是使用python解释器2.7.3,用2.7.6replace它。

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

当创build一个新的virtualenv时,它使用来自系统的更新的Python二进制文件。 因此,这解释了线程中接受的答案。

您不需要删除虚拟环境。

只要按照这些步骤。

  1. 假设您的虚拟环境名称是“mydev”,并且您正在使用virtualenvwrapper

     cd $WORKON_HOME virtualenv mydev 

    上面的命令只是将链接升级到python可执行文件,而不会丢失任何包。 没有virtualenvwrapper$WORKON_HOME可能没有定义; 那么你需要改变到virtualenv的父目录。

  2. 外部virtualenv,如果你的点不工作,那么只是

     easy_install pip 

    将解决这个问题。

在将我的ubuntu服务器升级到14.04之后,我在执行pip时也遇到了这样的问题

 ImportError: No module named _io 

然后我发现只需重新安装virtualenv就可以解决这个问题!

sudo pip install virtualenv --upgrade

造成这种情况的一个原因是糟糕的“点子”。 参见: https : //bugs.launchpad.net/ubuntu/+source/python-pip/+bug/1373254

和/或它可能是一个问题与virtualenv: https ://bugs.launchpad.net/ubuntu/+source/python2.7/+bug/1115466build议的解决方法是:

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

你必须在损坏的virtualenv中replacepython版本。

做这个:

  1. 创build一个新的Virtualenv

     mkvirtualenv MyNewTestEnv 
  2. find“python”(在我的情况下,virtualenvs位于主目录)

     cd ~/.virtualenvs/MyNewTestEnv/bin 
  3. 从新的virtualenv复制“python”到你损坏的virtualenv

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

而已。 现在你的CorruptedEnv应该被修复。

如果你已经安装了不同的python版本。 你必须引用你的Python

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

要么

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