Python的bz2模块默认不编译

Pio*_*zia 28 c python compiler-construction

似乎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 Tue Jun 6 15:52:09 PDT 2006 i686 GNU/Linux

IIRC我只使用--prefix标志.

Ale*_*lli 32

首先需要正确安装libbz2.so(通用libbz2库),以便Python能够构建自己的接口.这通常来自Linux发行版中的软件包可能在软件包名称中包含"libbz2"和"dev".

  • 在像Centos这样的发行版上使用Yum时,`bzip2`和`bzip2-devel`. (9认同)

小智 25

使用供应商的软件包管理添加包含bz2开发文件的软件包.它通常是一个名为"libbz2-dev"的软件包.例如在Ubuntu上

sudo apt-get install libbz2-dev


Ric*_*mes 17

这种麻烦有两种解决方案:

选项1.安装bzip2-devel

在Debian和衍生品上,您可以像这样轻松安装:

sudo apt-get install bzip2-devel
Run Code Online (Sandbox Code Playgroud)

选项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
Run Code Online (Sandbox Code Playgroud)

这里的关键位是以下命令:

make -f Makefile-libbz2_so
Run Code Online (Sandbox Code Playgroud)

我已经完成了这个,然后尝试再次构建Python,如下所示:

cd Python-2.7.3
./configure --prefix=/path/to/local 
make install
Run Code Online (Sandbox Code Playgroud)

  • 这里有一个错误,如果你运行`make`,则在尝试`make -f Makefile-libbz2_so`之前必须运行`make clean`. (6认同)
  • @hlin117 `-fPIC` 是编译器的标志,而不是 `make` 的选项。您必须将其作为环境变量传递,如下所示:`make -f Makefile-libbz2_so CFLAGS="-fPIC"` (2认同)

Eri*_*ric 8

如果您正在尝试在RHEL5上编译Python,则该包称为bzip2-devel,如果您已设置RHN,则可以使用以下命令进行安装:

yum install bzip2-devel

完成后,您不需要--enable-bz2或--with-bz2选项,但您可能需要--enable-shared.