[英]ImportError: No module named _io in ubuntu 14.04
我刚刚重新安装了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-pip
和sudo apt-get install python-pip
我有同样的问题。 这发生在Ubuntu-14.04和虚拟环境的Python版本-2.7.3中
在调试了一天之后,在这里发布我的答案,希望它对将来的访问者有所帮助。
我发现io.py
正在调用_io
模块。 我认为_io
模块是解释器的内部组件,因此,仅将环境中的python
二进制文件替换为较新版本即可。
(在我的情况下,ubuntu 14.04上的Cloudera Manager 5.x Agent的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二进制文件。 因此,这解释了线程中可接受的答案。
由于Python系统库中的差异,您的virtualenv损坏了。
最好的选择是重新安装您的virtualenv:
$ deactivate
$ rmvirtualenv nlmanagement
$ mkvirtualenv nlmanagement
$ pip install -r requirements.txt
您无需删除虚拟环境。
只需按照以下步骤。
假设您的虚拟环境名称为“ mydev”,并且您正在使用virtualenvwrapper
,
cd $WORKON_HOME virtualenv mydev
上面的命令只是将链接升级到python可执行文件,而不会丢失任何软件包。 如果没有virtualenvwrapper
, $WORKON_HOME
可能无法定义$WORKON_HOME
。 那么您需要转到virtualenv的父目录。
在virtualenv外部,如果您的pip不起作用,那么就
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/1115466推荐的解决方法是:
cd /usr/lib/python2.7
ln -s plat-x86_64-linux-gnu/_sysconfigdata_nd.py .
您必须在损坏的virtualenv中替换python版本。
做这个:
创建一个新的Virtualenv
mkvirtualenv MyNewTestEnv
找到“ python”(在我的情况下,virtualenvs位于主目录中)
cd ~/.virtualenvs/MyNewTestEnv/bin
将“ python”从新的virtualenv复制到损坏的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
此解决方法适用于SuSE 12.2下载的python,并使用./configure进行了安装,并使其安装到/ usr / local文件夹中
安装的pip和virtualenv
尝试创建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)
检查是否有库目录/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 -p python venv2”起作用
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 #
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.