python自动化脚本安装指定版本python环境详解


Posted in Python onSeptember 14, 2017

一般情况下编译安装python环境需要执行以下步骤:

  • 下载源码包
  • 解压源码包
  • 安装配置
  • 编译以及编译安装

TALK IS CHEAP, SHOW YOU MY CODE.

#!/usr/bin/python
#coding:utf-8
'''
date:9/2/17 18:03 PM
author:lockey
email:lockey@123.com
desc:python自动化安装用户指定版本的python环境
'''
#导入Python的系统编程操作模块
import os

#导入用来处理Python运行时配置以及资源,与前当程序之外的系统环境交互的模块
import sys

#判断当前用户是否是root用户
if os.getuid() == 0:
  pass
else:
  print 'Not under root mode, please switch user!'
  sys.exit(1)

#获取用户输入的python安装版本
version = raw_input('Please input wanted python version(2.7/3.6)')

#如果嫌官网下载速度太慢可以指定python3.6.2的链接地址为本人上传资源地址
#根据用户输入的python版本选择源码包下载地址
if version == '2.7':
  url = 'https://www.python.org/ftp/python/2.7.13/Python-2.7.13.tgz'
elif version == '3.6':
  url = 'https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tgz'
else:
  print 'Please input given version number(2.7/3.5)'
  sys.exit(1)

#拼接源码包下载地址并执行下载命令
cmd = 'wget ' + url
res = os.system(cmd)
if res != 0 :
  print 'Failed to download python source package, please inspect your network!'
  sys.exit(1)

if version == '2.7':
  package_version = 'Python-2.7.13'
else:
  package_version = 'Python-3.6.2'

#解压下载的源码包
cmd = 'tar xf ' + package_version + '.tgz'
res = os.system(cmd)

#如果解压失败则删除下载的源码包并且提示用户重新执行脚本
if res != 0:
  os.system('rm ' + package_version + '.tgz')
  print 'Please reexcute the script to install python'
  sys.exit(1)

#解压成功则进入解压后的源码目录中依次执行配置、编译、安装过程
cmd = 'cd ' + package_version + ' && ./configure --prefix=/usr/local/python && make && make install'

res = os.system(cmd)

#安装失败则提示用户安装失败了,让用户检查环境依赖
if res != 0:
  print 'Failed to install python, please inspect dependencies for python install!'
  sys.exit(1)

程序运行测试截图:

1. 测试普通用户模式下运行安装脚本:

python自动化脚本安装指定版本python环境详解

2. 切换到root用户然后运行自动安装脚本:

python自动化脚本安装指定版本python环境详解

3. 脚本自动配置(./configure)完成,进入编译(make)阶段

python自动化脚本安装指定版本python环境详解

4. 脚本编译安装完成:

python自动化脚本安装指定版本python环境详解

5. 测试安装的python环境:

python自动化脚本安装指定版本python环境详解

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
详解Django中的form库的使用
Jul 18 Python
Python解惑之True和False详解
Apr 24 Python
python 中的int()函数怎么用
Oct 17 Python
利用python 更新ssh 远程代码 操作远程服务器的实现代码
Feb 08 Python
python使用opencv按一定间隔截取视频帧
Mar 06 Python
Python八大常见排序算法定义、实现及时间消耗效率分析
Apr 27 Python
python判断一个集合是否为另一个集合的子集方法
May 04 Python
vue.js实现输入框输入值内容实时响应变化示例
Jul 07 Python
使用Py2Exe for Python3创建自己的exe程序示例
Oct 31 Python
Python脚本修改阿里云的访问控制列表的方法
Mar 08 Python
python读取Excel表格文件的方法
Sep 02 Python
PyTorch 解决Dataset和Dataloader遇到的问题
Jan 08 Python
python实现八大排序算法(2)
Sep 14 #Python
Python3.4编程实现简单抓取爬虫功能示例
Sep 14 #Python
python实现八大排序算法(1)
Sep 14 #Python
python实现简单聊天应用 python群聊和点对点均实现
Sep 14 #Python
Python实现购物系统(示例讲解)
Sep 13 #Python
python模块之sys模块和序列化模块(实例讲解)
Sep 13 #Python
python模块之time模块(实例讲解)
Sep 13 #Python
You might like
php简单提示框alert封装函数
2010/08/08 PHP
php读取二进制流(C语言结构体struct数据文件)的深入解析
2013/06/13 PHP
php操作redis命令及代码实例大全
2020/11/19 PHP
来自国外的页面JavaScript文件优化
2010/12/08 Javascript
JavaScript入门之基本函数详解
2011/10/21 Javascript
jquery创建一个ajax关键词数据搜索实现思路
2013/02/26 Javascript
js onload处理html页面加载之后的事件
2013/10/30 Javascript
JS Replace 全部替换字符的用法小结
2013/12/24 Javascript
js取得html iframe中的元素和变量值
2014/06/30 Javascript
Node.js中安全调用系统命令的方法(避免注入安全漏洞)
2014/12/05 Javascript
jquery左右全屏大尺寸多图滑动效果代码分享
2015/08/28 Javascript
jQuery简单实现两级下拉菜单效果代码
2015/09/15 Javascript
js实现增加数字显示的环形进度条效果
2017/02/05 Javascript
vue2.0结合Element实现select动态控制input禁用实例
2017/05/12 Javascript
Vue组件之全局组件与局部组件的使用详解
2017/10/09 Javascript
bootstrap datetimepicker控件位置异常的解决方法
2017/11/23 Javascript
Webpack实战加载SVG的方法
2017/12/26 Javascript
vue2.0使用swiper组件实现轮播的示例代码
2018/03/03 Javascript
浅谈javascript中的prototype和__proto__的理解
2019/04/07 Javascript
解决在layer.open中使用时间控件laydate失败的问题
2019/09/11 Javascript
[47:26]完美世界DOTA2联赛 LBZS vs Forest 第二场 11.07
2020/11/09 DOTA
Python实现动态添加类的属性或成员函数的解决方法
2014/07/16 Python
Python中给List添加元素的4种方法分享
2014/11/28 Python
各个系统下的Python解释器相关安装方法
2015/10/12 Python
Python数据类型详解(四)字典:dict
2016/05/12 Python
Python3实现的简单验证码识别功能示例
2018/05/02 Python
python使用numpy实现直方图反向投影示例
2020/01/17 Python
使用 Python ssh 远程登陆服务器的最佳方案
2020/03/06 Python
Python爬虫之爬取淘女郎照片示例详解
2020/07/28 Python
python打包多类型文件的操作方法
2020/09/21 Python
咖啡为什么会有酸味?你喝到的咖啡為什麼是酸的?
2021/03/17 冲泡冲煮
亲戚结婚的请假条
2014/02/11 职场文书
初三学生评语大全
2014/04/24 职场文书
社会体育专业大学生职业生涯规划书
2014/09/17 职场文书
产品调价通知函
2015/04/20 职场文书
MySQL查询日期时间
2022/05/15 MySQL