本脚本所有信息:

1:判断是不是root用户,是则继续不是则退出脚本输出信息
2:定义自己的版本
3:根据用户输入的版本号,来下载对应的版本包
4:使用系统命令wget来下载,注意wet后面有一个空格
5:os.system执行系统命令
6:如果无法下载,大部分是因为网络问题,提示用户检查网络
7:判断相应的用户来根据这个版本进行相应的解压
8:如果解压失败的话,提示信息,退出程序
9:如果编译失败退出返回信息
10:移动老的Python版本
11:进行3.5软连接,如果失败则退出返回信息

#coding=utf-8

import os
import sys if os.getuid() == 0:
pass
else:
print("当前用户不是Root用户,请以Root用户执行脚本")
sys.exit(1) #version = rat_input('请输入您想安装的Python版本号(2.7/3.5):')
version = '3.5' if version == '2.7':
url = 'https://www.python.org/ftp/python/2.7/Python-2.7.tgz'
elif version == '3.5':
url = 'https://www.python.org/ftp/python/3.5.0/Python-3.5.0.tgz'
else:
print("您输入的版本号有误,请输入2.7或者3.5")
sys.exit(1) cmd = 'wget '+url
res = os.system(cmd) if res != 0:
print('下载源码包失败,请检查当前网络')
sys.exit(1) if version == '2.7':
package_name = 'Python-2.7'
else:
package_name = 'Python-3.5.0' cmd = 'tar xf '+ package_name+ '.tgz'
res = os.system(cmd)
if res != 0:
os.system('rm '+package_name+'.tgz')
print('解压源码包失败,请重新运行这个脚本下载源码包')
sys.exit(1) cmd = 'cd ' + package_name+ '&& ./configure --prefix=/usr/local/python && make && make install'
res = os.system(cmd)
if res != 0:
print '编译Python失败'
sys.exit(1) cmd = 'mv /usr/bin/python /usr/bin/python_old'
res = os.system(cmd)
if res !=0:
print '移动失败,请手动移动(mv /usr/bin/python /usr/bin/python_old)'
sys.exit(1) cmd = 'ln -s /usr/local/python/bin/python3.5 /usr/bin/python'
res = os.system(cmd)
if res != 0:
print '软连接失败,请手动软连(ln -s /usr/local/python/bin/python3.5 /usr/bin/python)'
sys.exit(1) cmd = "sed -i 's/python/python_old/g' /usr/bin/yum"
res = os.system(cmd)
if res != 0:
print '修改失败,请手动修改文件内容:/usr/bin/yum - > #!/usr/bin/python 替换成 #!/usr/bin/python_old'
sys.exit(1) cmd = "sed -i 's/python/python_old/g' /usr/libexec/urlgrabber-ext-down"
res = os.system(cmd)
if res != 0:
print '修改失败,请手动修改文件内容:/usr/libexec/urlgrabber-ext-down - > #!/usr/bin/python 替换成 #!/usr/bin/python_old'
sys.exit(1)

执行完成之后,查看版本是否是Python3.5. 如果是则安装成功。

自动化脚本- 安装更换Python3.5的更多相关文章

  1. PHP学习日记 Windows配置PHP+Nginx+自动化脚本

    Windows配置PHP+Nginx+自动化脚本 安装与配置 PHP 下载PHP:传送门 选择合适的版本下载 尽量选Thread Safe 配置PHP: 解压后在文件夹中找到php.ini-devel ...

  2. Hadoop实战4:MapR分布式集群的安装配置及shell自动化脚本

    MapR的分布式集群安装过程还是很艰难的,远远没有计划中的简单.本人总结安装配置,由于集群有很多机器,手动每台配置是很累的,编写了一个自动化配置脚本,下面以脚本为主线叙述(脚本并不完善,后续继续完善中 ...

  3. Hadoop(MapR)分布式安装及自动化脚本配置

    MapR的分布式集群安装过程还是很艰难的,远远没有计划中的简单.本人总结安装配置,由于集群有很多机器,手动每台配置是很累的,编写了一个自动化配置脚本,下面以脚本为主线叙述(脚本并不完善,后续继续完善中 ...

  4. appium1.4+华为8.0执行自动化脚本,报启动session失败,原因是unicode_ime_apk\Uni codeIME-debug.apk在手机上已存在,再次安装失败,导致启动session失败,解决办法:换高版本的appium

    最开始做Android自动化测试时,通过执行脚本发现报,已安装UnicodeIME-debug.apk,再次安装失败,当时觉得这个apk对我来说没用,就把D:\Program Files (x86)\ ...

  5. 安卓8.0真机运行appium1.4遇到的问题:运行自动化脚本,手机自动安装 settings.apk和unclock.apk,执行脚本时提示安装UnicodeIME-debug.apk失败,怎么关掉自动安装?

    运行自动化脚本,手机自动安装 settings.apk和unclock.apk,执行脚本时提示安装UnicodeIME-debug.apk失败,怎么关掉自动安装? 这3个apk的目录分别是: D:\P ...

  6. 多测试讲解_009肖sirRF自动化框架安装教程

    robot framework:自动化测试框架 Python3.7 RIDE(可视化界面).  Wxpython  pip(在线下载) . setuptools(在线安装) . 第三方库 第三方库:s ...

  7. jws.mono脚本安装详解

    就在最近两天,最新版本的jws.mono上线了,这个版本除了提供与之前版本拥有的功能外,还额外提供了一个“自动化”的安装脚本,通过执行该脚本,jws.mono将自动快速的安装到指定的目录,同时,通过改 ...

  8. 比Ansible更吊的自动化运维工具,自动化统一安装部署_自动化部署udeploy 1.0

    新增功能: 2015-03-11 除pass(备份与更新)与start(启动服务)外,实现一切自动化. 注:pass与start设为业务类,由于各类业务不同,所以无法实现自动化.同类业务除外,如更新的 ...

  9. 比Ansible更吊的自动化运维工具,自动化统一安装部署自动化部署udeploy 1.0 版本发布

    新增功能: 逻辑与业务分离,完美实现逻辑与业务分离,业务实现统一shell脚本开发,由框架统一调用. 并发多线程部署,不管多少台服务器,多少个服务,同时发起线程进行更新.部署.启动. 提高list规则 ...

随机推荐

  1. apache下实现301永久性重定向的方法

    因为博客是使用了www.php100.com作为博客域名,所以想实现php100.com全部重定向(跳转)到www.php100.com.同时按照google的建议,使用服务器端 301 重定向,为了 ...

  2. Safair浏览器 时间戳转化兼容性问题。

    chrome 等浏览器支持 yyyy-MM-dd hh:mm:ss 格式,使用 Date.parse()进行转化 safair 浏览器不知道这种格式,需要将格式设置为 yyyy/MM/dd hh:mm ...

  3. httpd 隐藏文件

    问题情况, 因磁盘空间问题,使用rsync将 php工作目录下文件copy到新盘中后,出现 php服务很多目录访问返回 404,路径找不到,其实文件都存在,而且路径都是对的 解决思路. 根目录下 有个 ...

  4. html5 canvas 涂鸦画板

    html5 canvas 的涂鸦画板,可以加载图片进行涂鸦,也可以下载服务器使用的php上传的图片不能超过1M,只能是jpg或者png 格式的演示地址的服务器网速不怎么样,读取文件可能很慢,到达100 ...

  5. Django_model进阶

    Django-model进阶   QuerySet 可切片 使用Python 的切片语法来限制查询集记录的数目 .它等同于SQL 的LIMIT 和OFFSET 子句. >>> Ent ...

  6. Jquery 获取所有对象的第一个子元素

    转自:http://blog.sina.com.cn/s/blog_5fdbd0410100pmnn.html <ul>  <li>John</li>  <l ...

  7. javaScrpit中NaN的秘密

    NaN,不是一个数字,是一种特殊的值来代表不可表示的值,使用typeof或其他任何与之比较的处理方式,‘NaN’则会引起一些混乱, 一些操作会导致NaN值的产生.这里有些例子: Math.sqrt(- ...

  8. Android Dalvik虚拟机

    虽然Android平台使用Java来开发应用程序,但Android程序却不是运行在标准Java虚拟机上的. 可能是出于效率和版权的考虑,Google为Android专门设计了一套虚拟机Dalvik V ...

  9. Asterisk 通话过程中执行动作(即applicationmap )的使用方法和电话转会议的实现

      asterisk在正常通话过程中执行拨号计划中动作是通过feature.conf中的[applicationmap ]下定义的,举例如下: nway-start => *0,callee,M ...

  10. Lsyncd搭建同步镜像-用Lsyncd实现本地和远程服务器之间实时同步

    Lysncd即Live Syncing Daemon,它是开源的数据实时同步工具(后台进程),基于inotify和rsync. lsyncd会密切监测本地服务器上的参照目录,当发现目录下有文件或目录变 ...