在从源代码编译Python之前,我应该安装哪些软件包/库?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了在从源代码编译Python之前,我应该安装哪些软件包/库?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3587字,纯文字阅读大概需要6分钟。
内容图文
![在从源代码编译Python之前,我应该安装哪些软件包/库?](/upload/InfoBanner/zyjiaocheng/739/3b93f9729e434d4889415ed0e9cc80ca.jpg)
有一段时间我需要安装一个新的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音频硬件,因此bsddb185和sunaudiodev模块仍然不会在Ubuntu上构建,但所有其他模块都是在安装了上述软件包的情况下构建的.
UPDATE
在Ubuntu 14.04中有更多补丁需要Python 2.6和2.7等我建议改为检查pyenv.它包含一个脚本python-build(位于plugins / python-build / bin中).有了它,你可以安装这样的任意Python版本:
$./python-build 2.7.8 /opt/python27
其中2.7.8是版本,而/ opt / python27是它将安装的路径. Pyenv将下载Python版本,应用必要的补丁并进行配置;使;为你安装.
结束更新
Python 2.5和Python 2.6还需要在Ubuntu 11.04及更高版本上设置LDFLAGS,以处理新的多拱布局:
export LDFLAGS="-L/usr/lib/$(dpkg-architecture -qDEB_HOST_MULTIARCH)"
对于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行附近你会发现:
else if (proto_version == PY_SSL_VERSION_SSL3)
self->ctx = SSL_CTX_new(SSLv3_method()); /* Set up context */
else if (proto_version == PY_SSL_VERSION_SSL2)
self->ctx = SSL_CTX_new(SSLv2_method()); /* Set up context */
else if (proto_version == PY_SSL_VERSION_SSL23)
self->ctx = SSL_CTX_new(SSLv23_method()); /* Set up context */
将其改为:
else if (proto_version == PY_SSL_VERSION_SSL3)
self->ctx = SSL_CTX_new(SSLv3_method()); /* Set up context */
#ifndef OPENSSL_NO_SSL2
else if (proto_version == PY_SSL_VERSION_SSL2)
self->ctx = SSL_CTX_new(SSLv2_method()); /* Set up context */
#endif
else if (proto_version == PY_SSL_VERSION_SSL23)
self->ctx = SSL_CTX_new(SSLv23_method()); /* Set up context */
这会禁用SSL_v2支持,这显然在OpenSSL1.0中消失了.
Python 2.4(是的,我还有一些需要2.4的旧项目)需要这个补丁来setup.py:
--- setup.py 2006-10-08 19:41:25.000000000 +0200
+++ setup.py 2012-05-08 14:02:14.325174357 +0200
@@ -269,6 +269,7 @@
lib_dirs = self.compiler.library_dirs + [
'/lib64', '/usr/lib64',
'/lib', '/usr/lib',
+ '/usr/lib/x86_64-linux-gnu'
]
inc_dirs = self.compiler.include_dirs + ['/usr/include']
exts = []
@@ -496,7 +497,8 @@
ssl_incs += krb5_h
ssl_libs = find_library_file(self.compiler, 'ssl',lib_dirs,
['/usr/local/ssl/lib',
- '/usr/contrib/ssl/lib/'
+ '/usr/contrib/ssl/lib/',
+ 'x86_64-linux-gnu'
] )
if (ssl_incs is not None and
它需要编译:
env CPPFLAGS="-I/usr/lib/x86_64-linux-gnu" LDFLAGS="-L/usr/include/x86_64-linux-gnu" ./configure --prefix=/opt/python2.4
解决方法:
还有一些.通常情况下,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)
内容总结
以上是互联网集市为您收集整理的在从源代码编译Python之前,我应该安装哪些软件包/库?全部内容,希望文章能够帮你解决在从源代码编译Python之前,我应该安装哪些软件包/库?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。