记一次阿里云服务器安装Python的血泪史

一、前言

之前我在windows 10系统上面安装python 3.7,虽然在windows 上面安装简单,操作也方便,但是想要和linux 的shell 脚本交互就不方便了。因此,我决定在centos 7上面也安装上python最新版本
在这期间,我踩了很多坑,也填了很多坑,后来几乎要面临崩溃了,期间发生了什么?别着急,耐心往下看!

二、操作环境

操作系统:CentOS 7.4 64位

三、一般安装步骤

1.下载python安装包

wget https://www.python.org/ftp/python/3.8.0/Python-3.8.0a3.tar.xz

2.解压、配置、编译安装

tar xvf Python-3.8.0a3.tar.xz
cd Python-3.8.0a3
./configure

第一次踩坑了,报错如下:

解决过程:

查看报错信息,可以看出是系统缺少编译工具gcc c++之类

yum install gcc gcc-c++ make cmake -y
./configure

处理结果:解决问题

接下来编译安装

make && make install

第二次踩坑:缺少sha512

解决过程:

上网查询,应该是缺少openssl-devel,安装openssl-devel,试过改各种配置文件,重新编译安装

yum install gcc-c++ gcc make cmake zlib-devel bzip2-devel openssl-devel ncurse-devel -y
make clean
make && make install

处理结果:依旧报相同错误

再次解决办法:

随后心一狠,删除Python-3.8.0a3解压包,然后重新解压,配置,编译安装

cd ~
rm -rf Python-3.8.0a3
tar xvf Python-3.8.0a3.tar.xz
cd Python-3.8.0a3
./configure
make && make install

处理结果:解决问题,但又出现了新问题

第三次踩坑:没有_ctypes模块

解决方法:

查询报警信息,原来是少了libffi-devel依赖包,安装libffi-devel

yum install libffi-devel -y
make install

处理结果:解决问题

3.验证python

(1)查看python版本号

(2)进入python环境

友情提示:此时直接使用python命令,默认是运行系统自带的python2.7,不是新版本Python3.8命令,pip命令是python2.7的,pip3命令才是python3.8的!

最后跌入巨坑:

本来到这一步,新版本python可以使用了,就是每次使用命令都是python3,pip命令是pip3 install ,我觉得特别麻烦,于是进行了下面步骤操作(前方高能,千万不要模仿,千万不要模仿,千万不要模仿,重要的事情说3遍!!!):

我上网搜索如何卸载Python 2.7, 然后操作步骤如下:

rpm -qa|grep python|xargs rpm -ev --allmatches --nodeps
whereis python |xargs rm -frv
whereis python
python

我以为成功删除python就结束了,没想到当我使用yum 命令安装软件时,才发现出问题了:

我试着把其他的服务器上的/usr/bin/python文件拷贝过来使用,但是依旧同样报错。(/usr/bin/python是二进制文件,也没办法修改)

我接着寻找其他办法,看到一篇访问量挺高的博客,就尝试了一下,操作如下:

rpm -qa|grep yum|xargs rpm -ev --allmatches --nodeps #卸载yum
whereis yum |xargs rm -frv
下载相关包
wget http://vault.centos.org/7.4.1708/os/x86_64/Packages/python-2.6.6-36.el6.x86_64.rpm
...... #省略相关步骤
使用rpm安装python和yum依赖包
rpm -Uvh --replacepkgs python.rpm
rpm -Uvh --replacepkgs rpm-python
.rpm yum*.rpm

可是,我下载相关包失败后,这时候,我才看到了底下评论,好多人都说这种办法根本行不通,只能重装系统了!我当时想死的心都有了。

在多次尝试失败后,只好求助阿里云技术人员(服务器是阿里云的!),人家给出了建议:初始化磁盘(等同于重装系统)

最后解决措施:初始化磁盘!

其实,入坑才是最好的成长方式,但一定要学会总结,才不会重蹈覆辙!

踩坑总结:

1.在安装前要下载好所有依赖包,避免编译安装时出错。
2.了解yum 和python的关系,yum 安装软件需要依赖Python环境。
3.网上的技术文档未必每一篇都实用,尤其是删除,卸载软件类要十分慎重,最好有备份!
4.centos 系统删除yum及python后,并非无解,只是由于版本不同,相关软件包十分不好找,这个坑还是不要去踩!

避免大家重蹈覆辙,我整理了避坑安装步骤如下:

1.下载python

cd /usr/local
wget https://www.python.org/ftp/python/3.8.0/Python-3.8.0a3.tar.xz
yum install gcc-c++ gcc make cmake zlib-devel bzip2-devel openssl-devel ncurse-devel libffi-devel -y #安装编译工具

2.解压、配置、编译安装

tar xvf Python-3.8.0a3.tar.xz
mv Python-3.8.0a3 python-3.8
cd /usr/local/python-3.8
./configure
make && make install
python3 -V

3.删除,备份python2.7

mv /usr/bin/python /usr/bin/python.bak

4.建立软连接

ln -s /usr/local/bin/python3.8 /usr/bin/python #建立python命令软连接
python

ln -s /usr/local/bin/pip3 /usr/bin/pip #建立pip命令软连接
pip install --upgrade pip #测试pip命令(此处为更新命令)

有人会问,python2版本都删干净了吗?怎么检查现在输入python命令进入的是2版本还是3版本,pip命令是在2版本中执行,还是在3版本中执行的,这里我总结了一些技巧!(图片仅供参考,此时python2.7已经删除,正常情况不会出现python2.7相关图片!

判断python2.7 与python3.8版本技巧:输入python 命令后,看版本号!

python2.7版本

python3.8版本

判断pip 命令运行的版本号技巧:看有无警告字体!

在python2.7版本中

在python3.8版本中

5.修改yum依赖

vim /usr/bin/yum
将/usr/bin/python改为/usr/bin/python2.7

vim /usr/libexec/urlgrabber-ext-down
将/usr/bin/python改为/usr/bin/python2.7

6.验证yum功能

yum install -y wget

重大福利:

为了方便大家快速安装python3.8,我写了一个shell脚本自动安装python,拿走不谢!下载链接:https://down.51cto.com/data/2460942

参考文件:
python 安装 https://blog.csdn.net/luduo8055/article/details/82782660
python 升级 https://blog.51cto.com/10316297/2134736

原文地址:https://blog.51cto.com/13760351/2385907

时间: 2024-10-31 18:45:46

记一次阿里云服务器安装Python的血泪史的相关文章

阿里云服务器安装调试记录

服务器操作系统:CentOS7 一.挂载数据盘 如果没有买额外的数据盘,就跳过这步吧.不过估计很少有人不买吧. 阿里云有完整的挂载教程,直接照做就可以了,不再赘述 教程地址:http://help.aliyun.com/view/13435365.html 需要说明的是,如果你想挂载在自己的某个目录下,那么,先mkdir新建好目录,才能使用mount -a正确挂载 二.配置防火墙 虽然阿里方面声称他们有无敌安全防火墙--云盾,但是自己的服务器不弄个防火墙,就绝对不会踏实. 另写了一篇专门配置防火

记一次阿里云服务器发布

项目经理要求发布一个开发完毕的企业网站,本来想的是分分钟搞定.但没想到话费1天的时间.事情是这样的: 当我远程连接到服务器的时候,发现服务器上连根毛都没有. 我只能从第一步开始,安装IIS.结果: 没遇到过这个错误,搜索之,终于找到解决方案: ECS Windows2012系统安装IIS提示“服务器管理器WinRM插件可能已损坏或丢失”问题现象 OK,重新安装,还是不行好吗?!然后求助老司机,老司机不愧是老司机,就说了三个字:重启! 果然,重启之后就可以继续进行了.(帮助文档能不能走点心,写全啊

记一次阿里云ECS服务器图片资源迁移至 阿里云 oss

系统用户上传的图片资源放在ECS服务器,图片要做cdn加速,图片量越来越大(第一年200G,还在用户再增加图片量疯狂增长)备份是个问题. 决定迁移至 oss.前端直接上传oss 后台做签名,回调入库图片地址.流程就是这样. 阿里云提供了迁移工具 java版的(windows,linux 都有).ECS服务器要安装Java sdk... https://help.aliyun.com/document_detail/32202.html?spm=5176.doc31886.6.1040.IpSLr

阿里云服务器安装SQLServer本地无法远程访问

新买的阿里云服务器,安装上sqlserver2012,本机连接测试没有问题,但是回到本地,使用ip远程连接报错. 尝试了网上各种办法,都是失败.最后找到原因,原来在阿里云的控制台上有设置: 首先进入安全组 点击配置规则 点击克隆,克隆出如下规则: 再用本机连接数据库,成功连接!

阿里云服务器安装Apache环境外网不能访问

今天在阿里云上配置Apache+mysql+PHP,发现使用浏览器一直访问不了 我在网上找了好多方法都没有用,然后我想是不是因为服务器是阿里云的关系. 因为我以前帮同事搭建过环境,都没有出现这个问题. 最后找到还真是阿里云的问题:因为安全组默认没有放行网站使用的端口(如80端口).你需要自行放行该端口 设置之后,访问就正常了.

记一次阿里云服务器被用作DDOS攻击肉鸡

事件描述:阿里云报警 --检测该异常事件意味着您服务器上开启了"Chargen/DNS/NTP/SNMP/SSDP"这些UDP端口服务,黑客通过向该ECS发送伪造源IP和源端口的恶意UDP查询包,迫使该ECS向受害者发起了UDP DDOS攻击 源IP: xx.xx.xx.xx 源PORT: 111 目的PORT: 963 攻击类型: SunRPC反射攻击 扫描IP频数: 3 扫描TCP包频数: 11480 持续时间(分钟): 55 事件说明: 检测该异常事件意味着您服务器上开启了&qu

记一次阿里云中间件面试

8月初收到阿里中间件的面试邀请,收到之后很快就进行了第一面. 第一面主要聊了一些java自身的东西 常用的集合比如list,hashmap,set聊这些集合的适用常景和一些底层的实现原理.常用的并发包组件如conurrentHashMap,countdownlatch和这些组件的底层实现,锁有几种等等.后面就聊jvm相关的东西.比如内存布局,GC收集以及调优.类加载机载和一些常用jvm底层指令.后面又问了数据库.网络.操作系统.redis相关的知识.聊完之后面试官指出了我的一些不足之处之后就叫我

记一次阿里云OSS的STS授权访问

1.在阿里云控制台-访问控制中创建读写权限策略 https://help.aliyun.com/document_detail/31935.html?spm=5176.doc32069.2.4.AxKPsA%EF%BC%89 新建自定义策略 权限策略格式 { "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ &

阿里云服务器安装postfix--邮箱服务(排坑过程详解)

一.邮件服务需求 在实际生产环境中,我们的服务器难免会发生故障,这时候就需要有邮件通知运维人员,及时查出问题,解决问题.所以邮件服务在生产中有着不可或缺的作用! 二.操作环境 操作系统:CentOS 7 64位 三.安装步骤 1.直接yum 安装 yum install mailx -y 2.修改配置文件 vim /etc/mail.rc 在末行插入:set from=14****[email protected] #涉及隐私,未展示出账号set smtp=smtp.qq.comset smtp