当前位置:  开发笔记 > 编程语言 > 正文

ImportError:没有名为bz2的模块用于Python 2.7.2

如何解决《ImportError:没有名为bz2的模块用于Python2.7.2》经验,为你挑选了4个好方法。

我在Ubuntu 11.10上使用Python 2.7.2.导入bz2模块时出现此错误:

ImportError: No module named bz2

我认为bz2模块应该配备Python 2.7.我该如何解决这个问题?

编辑:我想我之前通过源代码编译安装了Python 2.7.2.可能在那时我没有libbz2-dev,所以没有安装bz2模块.现在,我希望通过安装Python2.7

sudo apt-get install python2.7

但它会说它已经安装好了.有没有办法卸载以前的Python2.7安装并重新安装?



1> 小智..:

我遇到了同样的问题,这是我的解决方案.

导入错误的原因是在构建python时,系统找不到bz2头并跳过构建bz2模块.

在Ubuntu/Debian上安装它们:

sudo apt-get install libbz2-dev

Fedora的:

sudo yum install bzip2-devel

然后重建python

来自另一个答案

@ birryree的回答有助于回到系统的原始python.


Fedora包是bzip2-devel.

2> wkl..:

好的,这在答案形式中更容易理解,所以我会将我在评论中写的内容移到这个答案.

幸运的是,你没有覆盖系统版本的python,因为Ubuntu 11.10预装了2.7.2.

你的python二进制文件(pythonpython2.7)位于/usr/local/bin,这是一个通常安装用户特定的东西的目录.这很好,这意味着你的系统python仍然存在.

首先,尝试运行系统python.从命令行键入:

/usr/bin/python -c "import bz2; print bz2.__doc__"

这应该打印出这样的东西:

? > /usr/bin/python -c "import bz2; print bz2.__doc__"

The python bz2 module provides a comprehensive interface for
the bz2 compression library. It implements a complete file
interface, one shot (de)compression functions, and types for
sequential (de)compression.

如果是这样,意味着你没事.

所以你只需修复你的PATH,告诉shell在哪里找到命令./usr/local/bin将优先考虑/usr/local,因此有一些方法可以解决这个问题,按照难度/烦恼/改变你的系统的顺序:

python从中删除符号链接/usr/local/bin

这将使得当你键入时python,它应该返回执行/usr/bin/python,这是系统的python 2.7.2的别名.

sudo rm /usr/local/bin/python

移动/usr/bin到更高的优先级PATH

如果你已经拥有/usr/local/bin应该优先考虑的东西,那么可能不可取/usr/bin,但我是为了完整性而添加它.

在你的shell配置文件中(不确定Ubuntu的默认设置是什么,但我正在使用~/.bash_profile,你可以这样做:

export PATH=/usr/bin:$PATH

删除你的python安装

这是极端的,我提出的第一个选项应该是你的第一选择.

你真的需要自己的Python版本吗?如果你想要孤立的python环境,你可能真的想要virtualenv.你可以删除你的,除非有理由不这样做.

虽然这会有点烦人,但基本上:

从中删除pythonand python2.7pythonwpythonw2.7命令/usr/local/bin.

去掉 /usr/local/lib/python/2.7.2

这部分不完整,因为我忘了还有什么.



3> CK.Nguyen..:

如果你必须使用python2.7,你应该运行:(Centos 6.4)

sudo cp /usr/lib64/python2.6/lib-dynload/bz2.so /usr/local/lib/python2.7/



4> Oleg Neumyva..:

也许它会帮助某人:

apt-get install libbz2-dev # for bz2
apt-get install libssl-dev # for _ssl
apt-get install libsqlite3-dev # for sqlite
apt-get install libreadline6-dev # for readline,  _curses,  _curses_panel


将`apt-get install ncurses-dev`添加到列表中.否则,适用于在Ubuntu 12.04 LTS上从源代码构建Python 2.7.5
推荐阅读
拾味湖
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有