问题描述
我刚刚安装了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
最佳解决思路
由于Python系统库中的差异,你的virtualenv变得腐败。
最好的选择是重新安装你的virtualenv:
$ deactivate
$ rmvirtualenv nlmanagement
$ mkvirtualenv nlmanagement
$ pip install -r requirements.txt
次佳解决思路
我有同样的问题。这发生在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
当创建一个新的virtualenv时,它使用来自系统的更新的python二进制文件。因此,这解释了线程中接受的答案。
第三种解决思路
您无需删除虚拟环境。
只需按照以下步骤操作
-
假设您的虚拟环境名称为”mydev”,并且您使用的是
virtualenvwrapper
,请执行cd $WORKON_HOME virtualenv mydev
上面的命令只是升级到python可执行文件的链接而不会丢失任何包。如果没有
virtualenvwrapper
,可能没有定义$WORKON_HOME
;那么你需要更改到virtualenv的父目录。 -
在virtualenv之外,如果你的点不工作,那么就是
easy_install pip
将解决问题。
第四种思路
在将我的ubuntu服务器升级到14.04之后,我在执行pip时也遇到了这种问题
ImportError: No module named _io
然后我发现只需重新安装virtualenv
就可以解决这个问题!
sudo pip install virtualenv --upgrade
第五种思路
造成这种情况的一个原因是”pip”不好。请参阅: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 .