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 相关文章推荐
Python中类型关系和继承关系实例详解
May 25 Python
python下paramiko模块实现ssh连接登录Linux服务器
Jun 03 Python
python遍历 truple list dictionary的几种方法总结
Sep 11 Python
Python实现修改文件内容的方法分析
Mar 25 Python
使用python爬虫获取黄金价格的核心代码
Jun 13 Python
浅谈django orm 优化
Aug 18 Python
Django 实现admin后台显示图片缩略图的例子
Jul 28 Python
Tensorflow与Keras自适应使用显存方式
Jun 22 Python
Python离线安装各种库及pip的方法
Nov 28 Python
python unittest单元测试的步骤分析
Aug 02 Python
详细介绍python操作RabbitMq
Apr 12 Python
Python 操作pdf pdfplumber读取PDF写入Exce
Aug 14 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警告Cannot use a scalar value as an array的解决方法
2012/01/11 PHP
js代码实现微博导航栏
2015/07/30 PHP
Laravel框架自定义验证过程实例分析
2019/02/01 PHP
JavaScript开发时的五个注意事项
2007/12/08 Javascript
jQuery 树形结构的选择器
2010/02/15 Javascript
在chrome中window.onload事件的一些问题
2010/03/01 Javascript
基于Jquery的表格隔行换色,移动换色,点击换色插件
2010/12/22 Javascript
javascript学习笔记(十五) js间歇调用和超时调用
2012/06/20 Javascript
利用js读取动态网站从服务器端返回的数据
2014/02/10 Javascript
前端轻量级MVC框架CanJS详解
2014/09/26 Javascript
javaScript基础语法介绍
2015/02/28 Javascript
JS实现跟随鼠标立体翻转图片的方法
2015/05/04 Javascript
js利用clipboardData实现截屏粘贴功能
2016/10/12 Javascript
jQuery md5加密插件jQuery.md5.js用法示例
2018/08/24 jQuery
JS实现提示效果弹出及延迟隐藏的功能
2019/08/26 Javascript
[11:57]《一刀刀一天》第十七期:TI中国军团加油!
2014/05/26 DOTA
python写的ARP攻击代码实例
2014/06/04 Python
python简单实现基于SSL的IRC bot实例
2015/06/15 Python
python pandas dataframe 按列或者按行合并的方法
2018/04/12 Python
python 随机打乱 图片和对应的标签方法
2018/12/14 Python
如何用python写一个简单的词法分析器
2018/12/18 Python
使用Python实现将list中的每一项的首字母大写
2019/06/11 Python
python requests使用socks5的例子
2019/07/25 Python
python爬虫 execjs安装配置及使用
2019/07/30 Python
python opencv 简单阈值算法的实现
2019/08/04 Python
Python实现直播推流效果
2019/11/26 Python
html通过canvas转成base64的方法
2019/07/18 HTML / CSS
澳大利亚领先的皮肤诊所:Skin Matrix(抗衰老、痤疮专家、药妆护肤)
2018/05/20 全球购物
大客户销售经理职责
2013/12/04 职场文书
高中生学习计划书
2014/09/15 职场文书
大学生第一学年自我鉴定2015
2014/09/28 职场文书
2014年保卫科工作总结
2014/12/05 职场文书
python实现进度条的多种实现
2021/04/29 Python
ES6 解构赋值的原理及运用
2021/05/25 Javascript
redis cluster支持pipeline的实现思路
2021/06/23 Redis
详解python的异常捕获
2022/03/03 Python