在centos上从源码安装python

在服务器上使用pip安装scrapy的时候,由于自己的用户对/usr/lib的目录没有写权限而安装不成功。然而服务器的root权限不能拿到,申请安装软件特别麻烦。

于是从源码安装python,使用

./configure --prefix=/your-path

可以安装python到自定义目录,(由于python默认安装的位置是没有写权限的)

执行make一切正常,接着执行make install的时候报错。

zipimport.ZipImportError: can't decompress data; zlib not available

因为是缺少zlib的库函数,因为系统库的目录没有写权限,也只能把安装库函数也自定义的目录,安装完成后修改Modules/Setup文件中:

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

其中$(prefix)和$(exec_prefix)修改为自定义安装zlib的位置,重新

make && make install

python安装成功后,使用pip安装scrapy的时候,总是报错:

Can't connect to HTTPS URL because the SSL module is not available.

搜索资料是因为缺少ssl module的原因。从源码安装openssl后,

修改Setup文件
vi python源码文件中Modules/Setup
#修改结果如下:
# Socket module helper for socket(2)
_socket socketmodule.c timemodule.c

# Socket module helper for SSL support; you must comment out the other
# socket line above, and possibly edit the SSL variable:
#SSL=“openssl安装的路径”
_ssl _ssl.c \
-DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \
-L$(SSL)/lib -lssl -lcrypto

一切工作完成后,使用pip安装scrapy的时候由于pip的源国内连接不稳定,报错:

HTTPSConnectionPool(host='pypi.python.org', port=443): Read timed out.

替换pip的默认安装源为aliyun源

新建~/.pip/pip.conf,填写以下内容:

[global]
index-url = http://mirrors.aliyun.com/pypi/simple/
[install]
trusted-host=mirrors.aliyun.com