【Python笔记】源码编译安装Python时,如何支持自定义安装的高版本openssl库

本文记录了在老旧操作系统上,因openssl版本低导致安装Scrapy困难的问题,以及如何通过源码编译安装Python并支持自定义的高版本openssl库。在编译过程中,验证了Python是否正确支持openssl,并分析了在安装cryptography库时遇到的ssl证书错误。
摘要由CSDN通过智能技术生成

最近有个小需求想使用Scrapy库做抓取,但公司开发机操作系统版本老旧,导致系统默认的openssl库版本也很低(OpenSSL 0.9.7a Feb 19 2003),最终导致安装Scrapy非常麻烦。趁着元旦假期,决定用自己安装好的高版本openssl库作为依赖,重新编译安装开发机的Python环境。

安装及其后使用中遇到一些关于openssl的问题,或许对自己后续工作或别人有参考价值,作为笔记,记录于此。

源码编译安装流程如下:

1. Python官网下载源码包(version 2.7.8)并解压

2. 通过configure配置Makefile参数
假定先前已在/home/slvher/tools/openssl-1.0.1j路径下成功安装好高版本openssl,那么,可以通过下面的环境变量来设置gcc的编译/链接参数:
export LDFLAGS="-lssl -lcrypto -Wl,-rpath=/home/slvher/tools/openssl-1.0.1j/lib/"
export CPPFLAGS="-I/home/slvher/tools/openssl-1.0.1j/include"
然后运行configure工具:
./configure --prefix=/home/slvher/tools/Python-2.7.8 
configure运行完后,会生成Makefile,check无误后,执行make && make install就能完成Python安装。

3. 验证Python支持的ssl版本
Python安装成功且其bin路径加入PATH环境变量后,可通过下面的命令来验证是否正确支持高版本的openssl库:

python -c "import ssl; print ssl.OPENSSL_VERSION"
例如我机器上的输出结果如下:
OpenSSL 1.0.1j 15 Oct 2014

4. 后续使用依赖openssl的包时,可能遇到的问题及解决思路
在依赖了高版本openssl库(普通用户自定义安装在非系统标准路径下)的Python环境下,通过easy_install或pip安装Python第三方包时,可能会报类似于下面的错误(以pip安装Scrapy为例):
此处省略上文...
[Errno 1] _ssl.c:510: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed -- Some packages may not be found!
此处省略下文...
受StackOverflow这篇帖子 python easy_install fails with SSL certificate error for all packages的启发,
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值