在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
标志。但是,这会返回一个错误,即它是一个无法识别的选项,并且没有任何效果。
解决方案是安装Ubuntu包
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中一行取消注释的修复)。我已经用以下命令修复了它。
然后按如下方式配置和安装python:
我现在可以在/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
并取消注释行:更改到目录/Modules/zlib:
然后编译了我的python3.2源代码。
然后能够测试导入的zlib,一切正常:)
相关问题 更多 >
编程相关推荐