使用zlib supp从源代码构建Python

2024-05-23 19:17:54 发布

您现在位置:Python中文网/ 问答频道 /正文

在Ubuntu 12.04上从源代码构建Python 3.2.3时,zlib模块不可用。

我从python.org下载了正式的源代码发行版,并尝试使用以下命令构建和安装它。

tar xfa Python3.2.3.tar.bz2
cd Python-3.2.3
./configure --prefix=/opt/python3.2
make
sudo make install

make命令输出包括以下内容。

Python build finished, but the necessary bits to build these modules were not found:
_curses            _curses_panel      _dbm            
_gdbm              _sqlite3           _ssl            
_tkinter           bz2                readline        
zlib                                            

运行make install并启动解释器后,无法导入zlib模块。

我确认zlib1g-dev包已安装在我的系统上。

我还发现了this similar question,它建议在./configure命令中添加--with-zlib标志。但是,这会返回一个错误,即它是一个无法识别的选项,并且没有任何效果。


Tags: 模块installorg命令buildmake源代码ubuntu
3条回答

解决方案是安装Ubuntu包dpkg-dev

sudo apt-get install dpkg-dev

原因已经解释过了。

简言之,Ubuntu的最新版本不会将libz.so存储在标准的/usr/lib位置,而是存储在特定于平台的位置。例如,在我的系统上是在/usr/lib/x86_64-linux-gnu。这会阻止Python的构建系统找到它。

dpkg-dev包安装dpkg-architecture可执行文件,这使Python能够找到必要的库。

最初的问题是关于Python3.2.3。我还下载了Python2.7.3并确认同样的问题存在,并且这个解决方案也适用于它。

我使用的是CentOS 6.6,并收到了zlib错误。这里提出的其他答案对我都不起作用(包括CentOS 6.3对Modules/Setup中一行取消注释的修复)。我已经用以下命令修复了它。

yum groupinstall "Development tools"
yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel

然后按如下方式配置和安装python:

./configure --prefix=/usr/local LDFLAGS="-Wl,-rpath /usr/local/lib"
make && make altinstall

我现在可以在/usr/local/bin/python2.7中导入zlib,没有问题。

These instructions are slightly modified from an article found here.

我在CentOS 6.3和python 3.2.3上也遇到了类似的问题

我通过以下方式解决了这个问题:

编辑/Modules/Setup并取消注释行:

zlib zlibmodule.c -I$(prefix)/include -L$(exec_prefix)/lib -lz

更改到目录/Modules/zlib:

./configure
make
sudo make install

然后编译了我的python3.2源代码。

然后能够测试导入的zlib,一切正常:)

相关问题 更多 >