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

Python ImportError:在ubuntu 14.04中没有名为_io的模块,python,linux,ubuntu,pip,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_entr

我刚刚新安装了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
(自然语言管理)psychok7@Ultrabook:~/code/work/nlmanagement$pip冻结
回溯(最近一次呼叫最后一次):
文件“/home/psychok7/code/work/venv/nlmanagement/bin/pip”,第9行,在
加载入口点('pip==1.1','console\u scripts','pip')()
文件“/home/psychok7/code/work/venv/nlmanagement/local/lib/python2.7/site packages/distribute-0.6.24-py2.7.egg/pkg\u resources.py”,第337行,在加载入口点
返回获取分布(dist)。加载入口点(组、名称)
文件“/home/psychok7/code/work/venv/nlmanagement/local/lib/python2.7/site packages/distribute-0.6.24-py2.7.egg/pkg\u resources.py”,第2279行,在加载入口点
返回ep.load()
文件“/home/psychok7/code/work/venv/nlmanagement/local/lib/python2.7/site packages/distribute-0.6.24-py2.7.egg/pkg_resources.py”,第1989行,已加载
条目=\uuuuu导入(self.module\u名称,globals(),globals(),[''\uuuuuu名称\uuuuu'])
文件“/home/psychok7/code/work/venv/nlmanagement/local/lib/python2.7/site packages/pip-1.1-py2.7.egg/pip/___;u init___;.py”,第10行
从pip.backardcompat导入walk\u包,控制台\u到\u str
文件“/home/psychok7/code/work/venv/nlmanagement/local/lib/python2.7/site packages/pip-1.1-py2.7.egg/pip/backwardcompat.py”,第77行,in
从urllib2导入URLError,HTTPError
文件“/usr/lib/python2.7/urllib2.py”,第94行,在
导入httplib
文件“/usr/lib/python2.7/httplib.py”,第79行,在
进口美托尔
文件“/usr/lib/python2.7/mimetools.py”,第6行,在
导入临时文件
文件“/usr/lib/python2.7/tempfile.py”,第32行,在
将io作为_io导入
文件“/usr/lib/python2.7/io.py”,第51行,在
导入
ImportError:没有名为_io的模块

有什么想法吗??我尝试了
sudo-apt-get-install-python3-pip
sudo-apt-get-install-python-pip

由于python系统库中的差异,您的virtualenv已损坏

最佳选择是重新安装virtualenv:

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

您不需要删除虚拟环境

只需遵循以下步骤

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

    cd $WORKON_HOME
    virtualenv mydev
    
    上面的命令只是将链接升级到python可执行文件,而不会丢失任何包。如果没有
    virtualenvwrapper
    $WORKON\u HOME
    可能无法定义;然后您需要更改到virtualenv的父目录

  • 在virtualenv之外,如果您的pip不工作,那么

    easy_install pip
    
    这将解决问题


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

    在花了一天的时间调试后,将我的答案发布在这里,希望它对未来的访问者有所帮助

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

    (在我的例子中,Cloudera Manager 5.x代理在Ubuntu14.04上的virtualenv使用的是python解释器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二进制文件。因此,这解释了线程中接受的答案。

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

    ImportError: No module named _io
    
    然后我发现只要重新安装
    virtualenv
    就可以解决这个问题


    sudo-pip-install-virtualenv-升级

    一个原因是“pip”不好。请参阅:

    和/或它可能是virtualenv的问题: 建议的解决方法是:

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

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

    这样做:

  • 创建一个新的Virtualenv

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

  • 将“python”从新的virtualenv复制到损坏的virtualenv中

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

  • 就是这样。现在你的CorruptedEnv应该被修复了。

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

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


    此解决方法适用于SuSE 12.2 下载python并使用./configure安装到defult/usr/local文件夹

    已安装pip和virtualenv

    mkvirtualenv MyNewTestEnv
    
    尝试创建python虚拟环境时

    *linux-t69c:/nkadic # virtualenv -p python venv2*
    **ImportError: No module named _struct**
    or (if manually setting PYTHONPATH)
    **ImportError: No module named _io**
    
    以下是解决方法:

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

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

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

    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/
    
    在此解决方案之后,“virtualenv-PythonVenv2”工作


    为什么我会有这些差异?因为升级?@psychok7是的,系统升级可能取代了一些库。它告诉我,
    rmvirtualenv:command未找到
    。我需要在特定的目录或什么地方吗?还有,
    requirements.txt
    ?当然,但在复制新的2.7b时,这是一个大问题与现有环境的距离足够(见)。这取决于重建virtualenv的成本有多高。在我的特定情况下,安装仅通过requirements.txt进行半自动化。有一个手动许可步骤和一个手动配置步骤。此外,我还依赖于scipy等。从头开始构建scipy需要很多分钟。我认为virtualenv的整个要点将python和库与操作系统隔离。为什么系统python更改会影响任何东西?尝试此操作后,我得到“ImportError:没有名为_sysconfigdata的模块”这是一个很好的问题。虽然virtualenv墙脱离了python的东西,
    \u io
    问题在于解释器本身的本机库,它们似乎不是孤立的、共享的
    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/
    
    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 #