CentOS7下编译Python3.7

本文档详细介绍了在CentOS7系统中编译安装Python3.7的步骤,包括安装相关依赖包、下载源码、配置、编译和安装。同时,还解决了在安装过程中遇到的两个主要问题:一是yum设置问题,需要将yum脚本中的Python解释器路径改为Python2;二是编译时缺少libffi-devel包导致的_ctypes模块缺失问题。最后,创建了python和pip的软链接,并确保yum能够正常工作。
摘要由CSDN通过智能技术生成

安装相关包

# 查看目前的python在系统的位置
[root@localhost ~]# whereis python
python: /usr/bin/python /usr/bin/python2.7 /usr/lib/python2.7 /usr/lib64/python2.7 /etc/python /usr/include/python2.7 /usr/share/man/man1/python.1.gz
# 转到python所在目录
[root@localhost ~]# cd /usr/bin
[root@localhost bin]# ll python*
lrwxrwxrwx. 1 root root 7 Jan 12 00:27 python -> python2
lrwxrwxrwx. 1 root root 9 Jan 12 00:27 python2 -> python2.7
-rwxr-xr-x. 1 root root 7216 Apr 11 2018 python2.7
# 安装相关包
[root@localhost bin]# yum install zlib-devel bzip2-devel openssl-devel nvurses-devel sqlite-devel readline-devel tk-devel gcc make

下载编译python的源码包

[root@localhost bin]# wget https://python.org/ftp/python/3.7.2/Python-3.7.2.tar.xz
# 解压
[root@localhost bin]# xz -d Python-3.7.2.tar.xz
[root@localhost bin]# tar -xf Python-3.7.2.tar
# 进入解压后的目录,然后安装
[root@localhost bin]# cd Python-3.7.2
[root@localhost Python-3.7.2]# ./configure prefix=/usr/local/python3
[root@localhost Python-3.7.2]# make && make install

添加软链接

# 备份原来的链接
[root@localhost Python-3.7.2]# mv /usr/bin/python /usr/bin/python.bak
# 添加python3的软链接
[root@localhost Python-3.7.2]# ln -s /usr/local/python3/bin/python3.7 /usr/bin/python
如果出现报错”ln: failed to create symbolic link '/usr/bin/python': File exists“,说明已经存在链接,删除原链接重新链接即可,删除命令[root@localhost Python-3.7.2]# rm -rf /usr/bin/python,
[root@localhost Python-3.7.2]# ln -s /usr/local/python3/bin/python3.7 /usr/bin/python
# 测试安装是否成功
[root@localhost Python-3.7.2]# python -V
Python 3.7.2
# 添加pip的软链接
[root@localhost Python-3.7.2]# ln -s /usr/local/python3/bin/pip3 /usr/bin/pip
[root@localhost Python-3.7.2]# pip -V
pip 18.1 from /usr/local/python3/lib/python3.7/site-packages/pip (python 3.7)

更改yum设置

因为要用python2才能执行,否则无法使用yum

[root@localhost Python-3.7.2]# vim /usr/bin/yum
然后按[e]==>[i]#! /usr/bin/python修改为#! /usr/bin/python2,再按[Esc],输入":wq"保存退出
[root@localhost Python-3.7.2]# vim /usr/libexec/urlgrabber-ext-down
然后按[e]==>[i]#! /usr/bin/python修改为#! /usr/bin/python2,再按[Esc],输入":wq"保存退出

在编译过程中出现的问题及解决方法

问题

在安装相关包时,输入yum install zlib-devel bzip2-devel openssl-devel nvurses-devel sqlite-devel readline-devel tk-devel gcc make,会出现Cannot find a valid baseurl for repo: base/7/x86_64的错误

解决方法

在查阅资料之后发现是没有联网,具体联网方式如下:

  • 第一步: 登录已装好的CentOS7虚拟机。以root管理员身份登录系统。在终端下输入双引号内的内容“ls /etc/sysconfig/network-scripts” ,之后按回车键。 此时,会出现一张文件列表,记下ifcfg-ensXXXX。

  • 第二步:在终端输入vi /etc/sysconfig/network-scripts/ifcfg-ensXXXX(XXXX替换为自己的数值), 此时进入ifcfg-ensXXXX这个网络配置文件的阅读模式,接着按i键,即insert,进入文本插入编辑模式。重点设置BOOTPROTO=dhcp,ONBOOT=yes即可。 修改完之后,先按Esc键,再按:键,然后输入wq,最后按回车键方可退出vim编辑器 。

  • 第三步:在主机下,按win+R键,调出win7运行栏。接着在运行栏中输入services.msc,打开windows服务。如下图所示,找到VMware DHCP Service和VMware NAT Service 确保它们都已启用!!

  • 第四步:在虚拟机终端下输入service network restart即可上网。

问题

在进入解压后的目录,然后安装时,输入make && make install会报错,ModuleNotFoundError: No module named ‘_ctypes’,这是因为3.7版本需要一个新的包libffi-devel,把这个包安装即可。

解决方法

[root@localhost Python-3.7.2]# yum install libffi-devel -y
[root@localhost Python-3.7.2]# make install

即可。

python3中有个内置模块叫ctypes,它是python3的外部函数库模块,提供了兼容C语言的数据类型,并通过它调用Linux系统下的共享库(Shared library),此模块需要使用centos7系统中外部函数库(Foreign function library)的开发链接库(头文件和链接库)。

由于在centos7系统中没有安装外部函数库(libffi)的开发链接库软件包,所以在安装pip的时候就报了"ModuleNotFoundError: No module named ‘_ctypes’"的错误。

参考资料

  1. 新装的CentOS 7安装python3
  2. 关于在centos下安装python3.7.0以上版本时报错ModuleNotFoundError: No module named '_ctypes’的解决办法
  3. Linux下安装python3
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值