最近公司新弄来一台linux redhat 4.4.7服务器,准备在上面离线安装python3.7,安装过程中出现一些问题,特此记录下来。
首先在python官网上下载了 Python-3.7.3.tgz文件,放在/usr/local/python3.7路径下,然后解压到该路径下
tar -zxvf Python-3.7.3.tgz
接着进入/usr/local/python3.7/python-3.7.3路径,执行
./configure --prefix=/usr/local/python3.7
完成之后,接着执行 make && make install 指令进行安装,结果报如下错误 ModuleNotFoundError: No module named '_ctypes'
网上查找一番,原因是安装pyhton3.7需要一个依赖模块 libffi-devel,为此在官网上下载了libffi-devel-3.2.1-alt2.x86_64.rpm文件,执行一下命令进行安装
rpm -ivh libffi-devel-3.2.1-alt2.x86_64.rpm
结果又报出错误:缺少依赖模块libffi6,于是我又在官网上下载 libffi6-3.2.1-alt2.x86_64.rpm文件,执行以下命令安装
rpm -ivh libffi6-3.2.1-alt2.x86_64.rpm
结果安装时又报错,提示:glibc库版本太低,至少需要glibc-2.14版本,于是我查看了一下系统中glibc库版本,执行以下命令
strings /lib64/libc.so.6 |grep GLIBC_
发现当前系统glibc库版本为2.12版本,于是需要对系统glibc库进行升级,我下载了下面4个文件
glibc-devel-2.17-55.el6.x86_64.rpm
glibc-2.17-55.el6.x86_64.rpm
glibc-common-2.17-55.el6.x86_64.rpm
glibc-headers-2.17-55.el6.x86_64.rpm
这几个文件间存在依赖关系,所以我就同时安装了它们,采用了如下指令
rpm -Uvh glibc-devel-2.17-55.el6.x86_64.rpm \
glibc-2.17-55.el6.x86_64.rpm \
glibc-common-2.17-55.el6.x86_64.rpm \
glibc-headers-2.17-55.el6.x86_64.rpm \
--force --nodeps
其中,参数 -Uvh中,
‘U’(update)表示对软件进行升级
'v'(verbose)指显示安装的过程信息
‘h’(hash)指软件安装的时候列出哈希标记,即显示安装进度
--force 表示强制安装,即使覆盖属于其他包的文件也要安装
--nodeps表示当要安装的rpm包依赖其他包时,即使其他包没有安装,也要安装这个包
安装完成后,查看是否安装成功,执行以下指令
rpm -qa | grep glibc
可以看到安装成功,再次查看glibc版本
可以看到,已经将系统glibc版本升级到2.17版本了,最后确认一下安装。于是重新安装libffi6、libffi-devel模块,均成功安装了,此时可以重新安装python3.7.3了,一路顺畅,安装成功。
最后,配置一下软链接,这样不必每次启动python时都需要进入其安装路径下启动,方便一些,依次执行
ln -s /usr/local/python3.7/bin/python3.7 /usr/bin/python3.7
ln -s /usr/local/python3.7/bin/pip3.7 /usr/bin/pip3
完成之后,测试一下
搞定了!