Python ImportError:在ubuntu 14.04中没有名为_io的模块
我刚刚新安装了ubuntu 14.04LTS,我正在尝试使用pip,但我得到了以下回溯: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
(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
您不需要删除虚拟环境 只需遵循以下步骤
virtualenvwrapper
,是否
cd $WORKON_HOME
virtualenv mydev
上面的命令只是将链接升级到python可执行文件,而不会丢失任何包。如果没有virtualenvwrapper
,$WORKON\u HOME
可能无法定义;然后您需要更改到virtualenv的父目录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版本 这样做:
mkvirtualenv MyNewTestEnv
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 #