Python自动化脚本:一键编译安装指定版本Python环境
本文介绍了一款用于自动化编译安装指定版本Python环境的Python脚本。该脚本支持普通用户与root权限下的执行,通过交互式输入指定版本号(如2.7或3.6),自动完成源码下载、解压、配置、编译及安装全过程。文章提供了完整的脚本代码及多阶段运行测试截图,涵盖从权限检查到环境验证的完整流程,旨在简化Python环境的部署工作。
通常情况下,在Linux系统中通过源码编译安装Python环境需要依次执行以下关键步骤:
- 第一步,从官方网站下载对应的Python源码压缩包。
- 第二步,将下载的源码包进行解压处理。
- 第三步,进入解压后的目录执行配置指令,设定安装路径等参数。
- 第四步,执行编译命令生成二进制文件,随后进行编译安装。
接下来,通过具体代码展示实现过程。
#!/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. 首先测试在普通用户模式下运行安装脚本的情况:

2. 接着切换到root用户权限,然后运行自动安装脚本:

3. 脚本自动执行配置(./configure)步骤完成后,进入编译(make)阶段:

4. 脚本显示编译安装已成功完成:

5. 最后对安装好的Python环境进行功能测试:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本站。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









