Skip to main content

moregeek program

linux下一键安装python3&更改镜像源&虚拟环境管理技巧_大刚测试开发实战的博客-多极客编程

Linux下一键安装Python3&更改镜像源&虚拟环境管理技巧_shell脚本

前言

之前分享过一篇《​​Linux系统自带Python2&yum的卸载及重装​​》,介绍了如何卸载及重装Linux(CentOS)自带的的Python2.7。今天主要介绍如何在Linux系统下通过shell脚本一键安装Python3,以及如何临时or永久更换镜像源、管理虚拟环境。工欲善其事必先利其器,环境搭建是一切开发&自动化测试绕不开的前提。

一、Linux安装Python3

在介绍shell脚本一键安装Python前,先来了解一下手工搭建的过程,或许更有助于我们理解自动化搭建的过程及原理。

1、手工安装方式

1)安装依赖环境

yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel

2)下载Python3

yum -y install wget # 没安装wget工具时运行此命令
wget https://www.python.org/ftp/python/3.7.5/Python-3.7.5.tgz

3)解压

tar -xzvf Python-3.7.5.tgz

4)编译安装

yum install gcc -y # 安装gcc编译器 
yum install libffi-devel -y # 3.7版本之后需要一个新的包libffi-devel
cd Python-3.7.5 # 进入解压后的文件夹
./configure --prefix=/home/python # 配置指定安装目录
make && make install # 编译&编译安装

5)配置python环境变量

export PYTHON_HOME=/home/python

export PATH=${PATH}:${PYTHON_HOME}/bin

vi /etc/profile # 在/etc/profile文件中加入上面两行内容
source /etc/profile # 添加完需要重新加载配置

2.shell脚本方式安装

1)编写shell脚本

shell脚本本质上就是将上述一步步手工操作步骤中的命令集成一个文件中,再加入一些判断或参数交互,从而自动顺序执行、实现自动化操作。

#!/bin/sh
yum -y install wget # 安装wget工具
yum -y install gcc # 安装gcc
# 安装一堆依赖
yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel
yum -y install libffi-devel
if [ ! -f "Python-3.7.5.tgz" ] # 判断当前目录是否存在Python安装包
then
echo Python-3.7.5.tgz not exist!!!
exit -1
fi
`tar -zxvf Python-3.7.5.tgz` # 解压安装包
if [ ! -d /home/python3 ] # 判断home目录下是否存在python3目录,不存在就创建
then
`mkdir -p /home/python3`
cd Python-3.7.5
./configure --prefix=/home/python3 # 配置安装目录为/home/python3
make && make install # 编译&编译安装
fi
# 添加Python环境变量到/etc/profile
echo "export PYTHON_HOME=/home/python3" >>/etc/profile
echo "export PATH=\${PATH}:\${PYTHON_HOME}\"/bin\"" >>/etc/profile
# 重新加载配置文件,注意:执行脚本时需使用source命令而非./或sh命令,否则环境变量不生效
`source /etc/profile`
# 设置Python安装镜像源为阿里云
`pip config set global.index-url https://mirrors.aliyun.com/pypi/simple`
echo "=====`date`===== Python-3.7.5 install success !!!====="

注意事项:

执行脚本需使用source命令而非./或sh命令,否则环境变量不生效,当然也可以再通过“source /etc/profile”命令使其生效。具体原理详见之前分享过的《​​解决shell脚本中"source /etc/profile"重载配置文件不生效的问题​​》

2)执行安装

source python_install.sh

安装成功后如下图所示:

Linux下一键安装Python3&更改镜像源&虚拟环境管理技巧_shell脚本_02

验证一下python3是否安装成功,以及脚本最后更改的pip镜像源是否生效:

Linux下一键安装Python3&更改镜像源&虚拟环境管理技巧_python_03

从上图可以看出,python3安装成功,python镜像源已成功替换为阿里云镜像源。

3.卸载python3

rpm -qa|grep python3|xargs rpm -ev --allmatches --nodeps  # 卸载python3
whereis python3 |xargs rm -frv # 删除python3所有残余文件,注意是卸载Python3,千万要带3,否则会把系统自带的Python2和yum(依赖Python2)也卸载了
whereis python3 # 查看是否存在python3
python3 # 进入python解释器环境,若提示“-bash: python3: command not found”则说明卸载成功


三、Python虚拟环境管理

在日常项目开发过程中,由于每个项目所用到的依赖包版本可能不一致,尤其是一些老项目。因此,为了避免各个项目之间环境相互“污染”,我们可以针对各个项目分别建立各自的虚拟环境。

python3 -m venv auto_test # 新建名为auto_test的虚拟环境目录 
cd auto_test/bin # 进入虚拟环境所在文件夹的bin目录(Windows进入Scripts目录)
source activate # 激活虚拟环境(Linux&Mac系统用source命令,Windows用.\activate.bat命令激活

激活成功后,命令行最前面会显示一个:(虚拟环境名称)

Linux下一键安装Python3&更改镜像源&虚拟环境管理技巧_shell脚本_04

四、配置pip安装镜像源

1.临时指定安装镜像源

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple(镜像地址) module(模块名称)

国内镜像源:

清华:https://pypi.tuna.tsinghua.edu.cn/simple

阿里云:http://mirrors.aliyun.com/pypi/simple/

中国科技大学https://pypi.mirrors.ustc.edu.cn/simple/

华中理工大学:http://pypi.hustunique.com/

山东理工大学:http://pypi.sdutlinux.org/

豆瓣:http://pypi.douban.com/simple/

2.永久更改安装镜像源

细心的同学或许会发现,其实在上述shell脚本中已经配置了阿里云的镜像源,不过如果没有通过脚本配置,我们也可以手工配置。

1)Linux系统

如果不想每次安装第三方包的时候都指定镜像源,也可以使用如下方法永久指定安装镜像源,一劳永逸

pip config set global.index-url https://mirrors.aliyun.com/pypi/simple # 永久配置国内镜像源
pip config list # 查看下载源配置列表

配置好镜像源后,可以使用“pip config list”命令查看下载源配置列表,具体写入的配置文件路径为:/root/.config/pip/pip.conf

Linux下一键安装Python3&更改镜像源&虚拟环境管理技巧_python_05

2)windows系统

windows系统设置和查看方法相同

Linux下一键安装Python3&更改镜像源&虚拟环境管理技巧_shell脚本_06

五、Python包批量导出&安装

pip freeze > requirements.txt # 导出当前环境下已安装的依赖包列表到指定文件 
pip download -r requirements.txt -d . # 下载指定文件中的所有依赖包,不安装
pip install -r requirements.txt # 批量安装

更多一手测试开发干货,欢迎关注

Linux下一键安装Python3&更改镜像源&虚拟环境管理技巧_shell脚本_07

©著作权归作者所有:来自51CTO博客作者大刚测试开发实战的原创作品,请联系作者获取转载授权,否则将追究法律责任
Linux下一键安装Python3&更改镜像源&虚拟环境管理技巧
https://blog.51cto.com/u_12612738/5565715

软件测试之方案浅析_多测师11的博客-多极客编程

  在软件测试过程中,测试方案起到什么样作用? 如何编写测试方案?等等类似关于软件测试方案的问题,往往没有一致的答案。不同的公司往往有自己的测试方案模板,测试工程师的理解也会有所差别。以下是我关于测试方案的理解,希望能够抛砖引玉。  编写测试方案的目的是啥?也许有人会说:根据产品功能需求(比如PRD)文档,参考产品设计文档,测试工程师就可以理解需求、设计测试用例了,不需要测试方案文档,即使写了测

jmeter性能测试_技术改变世界的博客-多极客编程

[TOC] 一、环境搭建 安装java 安装jdk1.8:默认安装 配置环境变量: 新建系统变量JAVA_HOME 值:jdk的安装路径 在path变量中新增两个值:;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin; 验证java安装成功 安装jmeter 解压jmeter压缩包到指定路径 双击jemeter.bat打开jmeter 二、创建线程组执

基于uiautomator2+pageobject模式开展app自动化测试实战_大刚测试开发实战的博客-多极客编程

前言在上一篇《​​APP自动化测试框架-UiAutomator2基础​​》中,重点介绍了uiautomator2的项目组成、运行原理、环境搭建及元素定位等基础入门知识,本篇将介绍如何基于uiautomator2设计PageObject模式(以下简称PO模式)、开展移动APP的自动化测试实践。一、PO模式简介1.起源PO模式是国外大神Martin Fowler于2013年提出来的一种设计模式,其基本

软件测试之预示面试成功的暗示_多测师11的博客-多极客编程

   1、面试官主动要求你详细介绍某个工作的细节  如:“你能详细说说自己在这个项目中是怎么做的吗?”  面试官对面试者的某个工作过程表现出很大的兴趣,并且鼓励面试者详细说明自己的做法,并且大胆陈述自己的各种想法和观点。  这是个很常识的心理反应,我们总是希望对有兴趣的事物了解得多一些,所以,从面试官询问的深度、是否注意聆听并对面试者的陈述发问,就可以知道面试官是否对你的工作经历感兴趣。  2、面

如何在linux快速搭建一套adb环境_大刚测试开发实战的博客-多极客编程

一、ADB简介1.什么是ADBAndroid Debug Bridge,安卓调试桥,它借助adb.exe(Android SDK安装目录platform-tools下),用于电脑端与模拟器或者真实设备交互;使用adb命令需安装Android SDK,并配置环境变量;2.ADB架构及组成它是一个C/S架构的应用程序,由三部分组成:adb client:运行在PC上(为DDMS即IDE工作)adb d

软件测试培训之软件bug等级划分标准_多测师11的博客-多极客编程

  测试BUG等级划分标准  1.Blocker(崩溃)【Fatal致命的】:阻碍开发或测试工作的问题;造成系统崩溃、死机、非法退出、死循环,导致数据库数据丢失,与数据库连接错误,主要功能丧失,基本模块缺失等问题。如:代码错误、死循环、数据库发生死锁、系统关键性能不达标,数据通信错误或接口不通等  2.Critical(严重):系统主要功能部分丧失、数据库保存调用错误、用户数据丢失,一级功能菜单不

软件测试之方案浅析_多测师11的博客-多极客编程

  在软件测试过程中,测试方案起到什么样作用? 如何编写测试方案?等等类似关于软件测试方案的问题,往往没有一致的答案。不同的公司往往有自己的测试方案模板,测试工程师的理解也会有所差别。以下是我关于测试方案的理解,希望能够抛砖引玉。  编写测试方案的目的是啥?也许有人会说:根据产品功能需求(比如PRD)文档,参考产品设计文档,测试工程师就可以理解需求、设计测试用例了,不需要测试方案文档,即使写了测

案例复现,带你分析priority blocking queue比较器异常导致的npe问题_华为云开发者社区的博客-多极客编程

摘要:本文通过完整的案例复现来演示在什么情况会触发该问题,同时给出了处理建议。希望读者在编程时加以借鉴,避免再次遇到此类问题。本文分享自华为云社区《​​Priority Blocking Queue比较器异常导致的NPE问题分析​​》,作者:谢照昆、王嘉伟。编者按:笔者在使用PriorityBlockingQueue实现按照优先级处理任务时遇到一类NPE问题,经过分析发现根本原因是在任务出队列时调

jmeter性能测试_技术改变世界的博客-多极客编程

[TOC] 一、环境搭建 安装java 安装jdk1.8:默认安装 配置环境变量: 新建系统变量JAVA_HOME 值:jdk的安装路径 在path变量中新增两个值:;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin; 验证java安装成功 安装jmeter 解压jmeter压缩包到指定路径 双击jemeter.bat打开jmeter 二、创建线程组执

软件测试之预示面试成功的暗示_多测师11的博客-多极客编程

   1、面试官主动要求你详细介绍某个工作的细节  如:“你能详细说说自己在这个项目中是怎么做的吗?”  面试官对面试者的某个工作过程表现出很大的兴趣,并且鼓励面试者详细说明自己的做法,并且大胆陈述自己的各种想法和观点。  这是个很常识的心理反应,我们总是希望对有兴趣的事物了解得多一些,所以,从面试官询问的深度、是否注意聆听并对面试者的陈述发问,就可以知道面试官是否对你的工作经历感兴趣。  2、面

精通java事务编程(6)-可串行化隔离级别之真串行_javaedge的博客-多极客编程

RC 和 快照隔离 级别可防止某些竞争条件,但并非全部。一些棘手案例,如写偏斜 和 幻读,会发现可悲情况:隔离级别难理解,且不同DB实现不一(如RR含义天差地别)若检查应用层代码很难判断特定隔离级别下是否安全,尤其是大型系统,无法预测各种并发无检测竞争条件的好工具。理论上,静态分析可能有所帮助,但更多技术还没法实际应用。并发问题测试也很难,一切取决于时机而这些还不是新问题,1970s引入了较弱隔离

什么是编辑器中的常量传播?_华为云开发者社区的博客-多极客编程

摘要:常量传播,顾名思义,就是把常量传播到使用了这个常量的地方去,用常量替换原来的变量。本文分享自华为云社区《​​编译器优化那些事儿(2):常量传播​​》,作者:毕昇小助手。基础知识盘点基本块 (Basic Block):一个基本块内的指令,处理器会从基本块的第一条指令顺序执行到基本块的最后一条指令,中间不会跳转到其它地方去,也不会有其它地方跳转到基本块的非首条指令上来。控制流图 (Control