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

时间:2014-04-19 23:21:04

标签: python linux ubuntu pip

我刚刚安装了ubuntu 14.04LTS,我正在尝试使用pip但是我得到了以下追溯:

(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

8 个答案:

答案 0 :(得分:55)

我遇到了同样的问题。这发生在Ubuntu - 14.04和Virtual environment的Python版本--2.7.3

经过一天的调试,在这里发布我的答案,希望它对未来的访问者有所帮助。

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

(就我而言,Cloudera Manager 5.x Agent在ubuntu 14.04上的virtualenv使用的是python Interpreter 2.7.3,用2.7.6替换它。

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

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

答案 1 :(得分:50)

由于Python系统库中的差异,你的virtualenv已经损坏了。

最佳选择是重新安装virtualenv:

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

答案 2 :(得分:22)

您不需要删除虚拟环境。

只需按照以下步骤操作即可。

  1. 让我们说你的虚拟环境名称是&#34; mydev&#34;并且您正在使用virtualenvwrapper,执行

    cd $WORKON_HOME
    virtualenv mydev
    

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

  2. 在virtualenv之外,如果你的点不起作用,那么只需

    easy_install pip
    

    将解决此问题。

答案 3 :(得分:3)

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

ImportError: No module named _io

然后我发现只需重新安装virtualenv即可解决此问题!

sudo pip install virtualenv --upgrade

答案 4 :(得分:2)

造成这种情况的一个原因是&#34; pip&#34;。看到: https://bugs.launchpad.net/ubuntu/+source/python-pip/+bug/1373254

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

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

答案 5 :(得分:0)

你必须在你损坏的virtualenv中替换python版本。

这样做:

  1. 创建一个新的Virtualenv

    mkvirtualenv MyNewTestEnv
    
  2. 找到“python”(在我的例子中,virtualenvs位于主目录中)

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

    cp ~/.virtualenvs/MyNewTestEnv/bin/python ~/.virtualenvs/<yourCorruptedEnv>/bin
    
  4. 就是这样。现在你的CorruptedEnv应该被修复。

答案 6 :(得分:0)

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

var start = 0;
window.setInterval(
  function() {
    start = start + 10;
    var btc = start / 100000000;

    console.log(btc + " BTC");
  }, 1000);

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

答案 7 :(得分:0)

此替代方法适用于SuSE 12.2 下载python并使用./configure进行安装,然后将其安装到/ usr / local文件夹中

已安装pip和virtualenv

尝试创建python虚拟环境时

cap -T

这是解决方法:

检查默认的sys.path python(不要更改默认的PYTHONPATH)

检查是否存在libs目录/usr/local/lib/python2.7/lib-dynload

如果没有,请创建指向现有lib64路径的符号链接:

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

此解决方法之后,“ virtualenv -p python venv2”有效

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/