在从源代码编译Python之前,我应该安装哪些软件包/库?

Modified on: Sat, 09 Jun 2018 09:12:53 +0800

有一段时间我需要安装一个新的Ubuntu(我将它用于桌面和服务器)并且我总是忘记在编译之前我应该​​安装的几个库,这意味着我必须重新编译,而且它变得很烦人。

所以现在我想在编译Python之前制作要安装的所有库包的完整列表(最好是它们的可选方式)。

这是我在下面的帮助下编译的列表,并通过挖掘setup.py。至少对于Ubuntu 10.04和11.04来说是完整的:

build-essential (obviously)
libz-dev        (also pretty common and essential)
libreadline-dev (or the Python prompt is crap)
libncursesw5-dev
libssl-dev
libgdbm-dev
libsqlite3-dev
libbz2-dev

对于Python 3.2及更高版本:

liblzma-dev

更多可选:

tk-dev libdb-dev

Ubuntu没有Berkeley数据库v1.8.5的软件包,也没有(由于显而易见的原因)Sun音频硬件,所以bsddb185sunaudiodev模块仍然没有在Ubuntu上构建,但所有其他模块都是在安装了上述软件包的情况下构建的。

更新强>

在Ubuntu 14.04中,Python 2.6和2.7等需要更多补丁。我建议您查看pyenv。它包含一个脚本python-build(位于plugins/python-build/bin中)。有了它,你可以安装这样的任意Python版本:

liblzma-dev

其中2.7.8是版本,/ opt / python27是它将安装的路径。 Pyenv将下载Python版本,应用必要的补丁和configure; make; make install

END UPDATE

Python 2.5和Python 2.6还需要在Ubuntu 11.04及更高版本上设置LDFLAGS,以处理新的多拱布局:

tk-dev
libdb-dev

对于Python 2.6,2.7和3.0,您还需要在运行./configure脚本之后以及运行make之前显式启用SSL。在Modules/Setup中有这样的行:

#SSL=/usr/local/ssl #_ssl _ssl.c \ # -DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \ # -L$(SSL)/lib -lssl -lcrypto

取消注释这些行并将SSL变量更改为/usr

SSL=/usr _ssl _ssl.c \ -DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \ -L$(SSL)/lib -lssl -lcrypto

Python 2.6和3.0还需要修改的Modules / _ssl.c与OpenSSL 1.0一起使用,后者在Ubuntu 11.10中使用。在第300行附近你会发现:

$ ./python-build 2.7.8 /opt/python27

将其更改为:

export LDFLAGS="-L/usr/lib/$(dpkg-architecture -qDEB_HOST_MULTIARCH)"

这会禁用SSL_v2支持,这显然在OpenSSL1.0中消失了。

Python 2.4(是的,我还有一些需要2.4的旧项目)需要这个补丁来setup.py:

#SSL=/usr/local/ssl
#_ssl _ssl.c \
#       -DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \
#       -L$(SSL)/lib -lssl -lcrypto

需要编译:

SSL=/usr
_ssl _ssl.c \
       -DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \
       -L$(SSL)/lib -lssl -lcrypto

最佳答案

还有一些。通常情况下,configure会提醒您是否缺少任何内容,其中一些 是可选的。这是我的清单:

build-essential libncursesw5-dev libreadline5-dev libssl-dev libgdbm-dev libc6-dev libsqlite3-dev tk-dev libbz2-dev

请注意,无需安装Tk开发库。 Tk通过存储库提供(对于python 2.x和python 3)

作者:,community wiki,2 revs, 2 users 95%
Stefano Palazzo

相关问答

添加新评论