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

psy*_*ok7 50 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
Run Code Online (Sandbox Code Playgroud)

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

Tha*_*wda 55

我有同样的问题.这发生在Ubuntu - 14.04和Virtual环境的Python版本 - 2.7.3

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

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

(就我而言,Cloudera Manager 5.x Agent在ubuntu 14.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
Run Code Online (Sandbox Code Playgroud)

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

  • 我认为virtualenv的重点是从操作系统中删除python和库.为什么系统python更改会影响任何东西? (2认同)
  • 这是此页面上唯一对我有用的答案(都试过了)。这将 python 解释器从 virtual-env 中的 python 2.7.3 升级到 2.7.6。顺便说一句,我没有使用 Cloudera manager BTW,只是一个 vanilla Ubuntu 14.04,其中虚拟环境起源于 12.04(并且 git 在 14.04 上克隆)。谢谢! (2认同)

Yuv*_*dam 50

由于Python系统库中的差异,你的virtualenv变得腐败.

最好的选择是重新安装你的virtualenv:

$ deactivate
$ rmvirtualenv nlmanagement
$ mkvirtualenv nlmanagement
$ pip install -r requirements.txt
Run Code Online (Sandbox Code Playgroud)

  • 它告诉我'rmvirtualenv:命令未找到'.我需要在特定的目录中吗?另外,`requirements.txt`是什么/在哪里? (5认同)
  • 当然,但这只是一个大锤子,只需将新的2.7二进制文件复制到现有的env即可(参见http://stackoverflow.com/a/24191303/143804). (5认同)
  • 这取决于你的virtualenv重建的成本.在我的具体情况下,安装只是通过requirements.txt半自动化.有手动许可步骤和手动配置步骤.另外,我还依赖于scipy等.从头开始构建scipy需要很多分钟. (2认同)

Gom*_*mes 22

您无需删除虚拟环境.

只需按照以下步骤操作

  1. 假设您的虚拟环境名称是"mydev"而您正在使用virtualenvwrapper,请执行此操作

    cd $WORKON_HOME
    virtualenv mydev
    
    Run Code Online (Sandbox Code Playgroud)

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

  2. 在virtualenv之外,如果你的点不工作,那么就是

    easy_install pip
    
    Run Code Online (Sandbox Code Playgroud)

    将解决问题.

  • 尝试#1我得到'OSError:命令python -c"#!python \"\"\"Bootstra ... sys.argv [1:])' (2认同)