Python的bz2模块默认未编译

32 投票
4 回答
43440 浏览
提问于 2025-04-15 11:21

看起来Python 2.6.1在默认情况下不会从源代码编译bz2库。

我没有lib-dynload/bz2.so这个文件。

有没有什么快速的方法可以添加这个库(不想从头安装Python)?

我的操作系统是Linux 2.4.32-grsec+f6b+gr217+nfs+a32+fuse23+tg+++opt+c8+gr2b-v6.194 #1 SMP 2006年6月6日 星期二 15:52:09 PDT i686 GNU/Linux。

如果我没记错的话,我只用了--prefix这个参数。

4 个回答

20

这个问题有两种解决办法:

选项 1:安装 bzip2-devel

在 Debian 及其衍生版本上,你可以很简单地这样安装:

sudo apt-get install bzip2-devel

选项 2:构建并安装 bzip2

bzip2 包 的 README 文件中,有说明在某些平台上,特别是使用 Linux-ELF 二进制文件的系统,你需要构建一个额外的共享对象文件,方法如下:

wget http://bzip.org/1.0.6/bzip2-1.0.6.tar.gz
tar xpzf bzip2-1.0.6.tar.gz
cd bzip2-1.0.6
make
make -f Makefile-libbz2_so
make install PREFIX=/path/to/local # /usr/local by default

这里最关键的命令是:

make -f Makefile-libbz2_so

我已经这样做了,然后尝试再次构建 Python,方法如下:

cd Python-2.7.3
./configure --prefix=/path/to/local 
make install
30

使用你所用的系统的包管理工具来添加包含bz2开发文件的包。这个包通常叫做“libbz2-dev”。比如在Ubuntu系统上,你可以这样做:

sudo apt-get install libbz2-dev

35

首先,你需要先正确安装libbz2.so这个库(这是一个通用的libbz2库),这样Python才能建立自己的接口来使用它。通常,你可以在你的Linux系统的软件包中找到这个库,包名里一般会包含“libbz2”和“dev”。

撰写回答