python安装与配置:在centos上使用shell脚本一键安装

介绍

Python是一种功能强大且广泛使用的编程语言,但在某些情况下,您可能需要安装和配置特定版本的Python。本教程将向您展示如何使用一个Shell脚本自动完成这个过程,以便您可以快速开始使用Python 3。

使用shell自动化安装教程

1. 复制脚本

首先,将以下脚本内容复制并保存为/tmp/install_python3.sh文件。

#!/bin/bashinstallDir="/opt/module/python"
# 可以修改为自己想安装的版本
version="3.8.1"if [ ! -d "${installDir}" ]; thensudo mkdir -p "${installDir}"if [ $? -eq 0 ]; thenecho "安装目录${installDir}已创建"elseecho "请确保您有足够的权限来创建目录,请增加权限后再次执行"exit 1fi
fi
# 下载python安装所需的工具和库
sudo yum install -y gcc openssl-devel bzip2-devel libffi-devel
if [ $? -eq 0 ]; thenecho "python安装所需的工具和库下载成功"
elseecho "python安装所需的工具和库下载失败,请查看异常信息后重试"exit 1
fi
if [ ! -f /tmp/Python-$version.tgz ]; thenwget https://www.python.org/ftp/python/$version/Python-$version.tgz -P /tmpif [ $? -eq 0 ]; thenecho "/tmp/Python-$version.tgz下载成功"elseecho "/tmp/Python-$version.tgz下载失败,请重试或手动下载到/tmp目录下再次执行"echo "下载地址:https://www.python.org/ftp/python/$version/Python-$version.tgz"exit 1fi
fi
if [ -d $installDir/Python-$version ]; thenecho "$installDir/Python-$version 已存在,正在删除"sudo rm -rf $installDir/Python-$version
fi
tar -zxvf /tmp/Python-$version.tgz -C $installDir
if [ $? -eq 0 ]; thenecho "/tmp/Python-$version.tgz解压成功"
elseecho "/tmp/Python-$version.tgz解压失败,请查看异常信息后重试"exit 1
ficd $installDir/Python-$version
# 配置Python编译和安装过程的参数
#./configure --enable-optimizations
$installDir/Python-"$version"/configure
if [ $? -eq 0 ]; thenecho "配置Python编译和安装过程的参数成功"
elseecho "配置Python编译和安装过程的参数失败,请查看异常信息后重试"exit 1
fi
# 自动化构建和编译python
make -j 2
if [ $? -eq 0 ]; thenecho "自动化构建和编译python成功"
elseecho "自动化构建和编译python失败,请查看异常信息后重试"exit 1
fi
#使用altinstall而不是install可以避免覆盖系统默认的Python 2.x版本。
sudo make altinstall
if [ $? -eq 0 ]; thenecho "altinstall成功"
elseecho "altinstall失败,请查看异常信息后重试"exit 1
fi
# 修改Python3作为默认版本,使用update-alternatives命令添加Python 3的符号链接
sudo update-alternatives --install $(which python) python $(which python${version:0:3}) 1
if [ $? -eq 0 ]; thenecho "修改Python3作为默认版本成功"
elseecho "修改Python3作为默认版本失败,请查看异常信息后重试"exit 1
fi
# 验证是否安装成功
if [[ $(python --version) == "Python $version" ]]; thenecho "python3下载、安装、配置成功"
fi
# 解决安装python3后使用不了yum问题
yum_file="/usr/bin/yum"
down_file="/usr/libexec/urlgrabber-ext-down"
if grep -q "#!/usr/bin/python2" "$yum_file"; thenecho "#!/usr/bin/python2已设置"
elif grep -q "#!/usr/bin/python" "$yum_file"; thensudo sed -i 's|#!/usr/bin/python|#!/usr/bin/python2|' "$yum_file"echo "#!/usr/bin/python2设置成功"
elseecho "在 $yum_file 中找不到Python解释器"
fi
if grep -q "#! /usr/bin/python2" "$down_file"; thenecho "#! /usr/bin/python2已设置"
elif grep -q "#! /usr/bin/python" "$down_file"; thensudo sed -i 's|#! /usr/bin/python|#! /usr/bin/python2|' "$down_file"echo "#!/usr/bin/python设置成功"
elseecho "在 $down_file中找不到Python解释器"
fi
# 安装pip
#sudo yum install python3-pip
# 更新pip,解决pip下载一些python包失败问题
python -m pip install --upgrade pipexit 0

2. 增加执行权限

在终端中执行以下命令,为脚本添加执行权限。

chmod a+x /tmp/install_python3.sh

3. 执行脚本

执行以下命令,运行脚本开始下载、安装和配置Python 3。

/tmp/install_python3.sh

请耐心等待,直到下载、安装和配置完成。执行过程中会显示相关信息。

成功如下图:

在这里插入图片描述

4. 更改默认python版本

如果您想设置为系统的python默认版本,可以执行以下命令:

sudo update-alternatives --config python

根据提示选择要设置为默认的Python版本。
在这里插入图片描述

5. 使用pip安装Python包

安装Python包时,可以使用以下命令:

python -m pip install package_name

将package_name替换为要安装的包的名称。

在使用 pip 命令时,可以通过以下几种方式指定国内镜像站:

临时指定:在执行 pip 命令时,使用 --index-url 或 -i 参数指定镜像站的 URL。例如:

python -m pip install --index-url https://pypi.tuna.tsinghua.edu.cn/simple/ package_name

python -m pip install package_name -i https://pypi.tuna.tsinghua.edu.cn/simple/

永久指定:可以在 pip 的配置文件中永久指定镜像站。

编辑pip配置文件:

vim ~/.pip/pip.conf

vim /etc/pip.conf

在配置文件中添加以下内容,将镜像站的 URL 替换为想要使用的镜像站地址:

[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple/

使用环境变量:可以设置 PIP_INDEX_URL 环境变量来指定镜像站地址:

export PIP_INDEX_URL=https://pypi.tuna.tsinghua.edu.cn/simple/

echo >> ~/.bashrc
echo 'export PIP_INDEX_URL=https://pypi.tuna.tsinghua.edu.cn/simple/' >> ~/.bashrc

以下是一些常用的 Python 镜像站:

阿里云 PyPI 镜像:https://mirrors.aliyun.com/pypi/simple/
清华大学 PyPI 镜像:https://pypi.tuna.tsinghua.edu.cn/simple/
豆瓣 PyPI 镜像:https://pypi.douban.com/simple/
网易 PyPI 镜像:https://mirrors.163.com/pypi/simple/
腾讯云 PyPI 镜像:https://mirrors.cloud.tencent.com/pypi/simple/

总结

通过本教程,您学会了如何使用一个Shell脚本自动安装和配置Python 3。您只需复制脚本、添加执行权限并执行脚本,即可轻松完成Python 3的安装和配置过程。

希望本教程对您有所帮助!如有任何疑问或问题,请随时在评论区留言。感谢阅读!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/192774.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

51单片机项目(19)——基于51单片机的传送带产品计数器

1.功能描述 应用背景: 某生产线的传送带上不断地有产品单向传送,传送时会通过光电传感器产生方波信号,将该信号(可以采用方波发生器来模拟该信号)直接传送给51单片机,利用计数器0计量产品(方波信号)的个数,利用.定时器1产…

Python海绵宝宝

目录 系列文章 写在前面 海绵宝宝 写在后面 系列文章 序号文章目录直达链接表白系列1浪漫520表白代码https://want595.blog.csdn.net/article/details/1306668812满屏表白代码https://want595.blog.csdn.net/article/details/1297945183跳动的爱心https://want595.blog.cs…

leetcode 209. 长度最小的子数组(优质解法)

代码&#xff1a; //时间复杂度 O(N) ,空间复杂度 O(1) class Solution {//采用滑动窗口的方法解决public int minSubArrayLen(int target, int[] nums) {int numsLengthnums.length;int minLengthInteger.MAX_VALUE;int left0;int right0;int sum0;while (right<numsLengt…

【SpringBoot】讲清楚日志文件lombok

文章目录 前言一、日志是什么&#xff1f;二、⽇志怎么⽤&#xff1f;三.自定义打印日志3.1在程序中得到日志对象3.2使用日志打印对象 四.⽇志级别4.1日志级别有什么用4.2 ⽇志级别的分类与使⽤ 五.日志持久化六.lombok6.1添加lobok依赖注意&#xff1a;使⽤ Slf4j 注解&#x…

Linux 多线程(C语言) 备查

基础 1&#xff09;线程在运行态和就绪态不停的切换。 2&#xff09;每个线程都有自己的栈区和寄存器 1&#xff09;进程是资源分配的最小单位&#xff0c;线程是操作系统调度执行的最小单位 2&#xff09;线程的上下文切换的速度比进程快得多 3&#xff09;从应用程序A中启用应…

Linux系列-1 Linux启动流程——init与systemd进程

背景&#xff1a; 最近对所有项目完成了一个切换&#xff0c;服务管理方式由&#xff1a; init-> systemd。对相关知识进行总结一下。 1.启动流程 服务器的整体启动流程如下图所示&#xff1a; POST&#xff1a; 计算机通电后进行POST( Power-On Self-Test )加电自检&am…

linux之buildroot(3)配置软件包

Linux之buildroot(3)配置软件包 Author&#xff1a;Onceday Date&#xff1a;2023年11月30日 漫漫长路&#xff0c;才刚刚开始… 全系列文章请查看专栏: buildroot编译框架_Once_day的博客-CSDN博客。 参考文档&#xff1a; Buildroot - Making Embedded Linux Easymdev.t…

Hdoop学习笔记(HDP)-Part.17 安装Spark2

目录 Part.01 关于HDP Part.02 核心组件原理 Part.03 资源规划 Part.04 基础环境配置 Part.05 Yum源配置 Part.06 安装OracleJDK Part.07 安装MySQL Part.08 部署Ambari集群 Part.09 安装OpenLDAP Part.10 创建集群 Part.11 安装Kerberos Part.12 安装HDFS Part.13 安装Ranger …

canvas 轮廓路径提取效果

前言 微信公众号&#xff1a;前端不只是切图 轮廓 对内容做border效果&#xff0c;可以先看下代码运行的效果 内容是黑线构成的五角星&#xff0c;其轮廓就是红线的部分&#xff0c;本文主要介绍如何在canvas中实现这种效果 Marching Square 这里运用到的是marching square算法…

鸿蒙是Android套壳么,当然不是,ArkTS还是很有意思的

前段时间看新闻&#xff0c;说是明年开始鸿蒙就要和andorid脱钩了。 大概就是这样的&#xff1a; 看到这个&#xff0c;我兴趣就来了。我有个华为P30&#xff0c;升级过鸿蒙系统&#xff0c;用起来也没啥变化&#xff0c;兼容andorid应用&#xff0c;然后就是开机去掉了Powere…

数据库表的管理

表的基本概念 表是包含数据库中所有数据的数据库对象。数据在表中的组织方式与在电子表格中相似&#xff0c;都是 按行和列的格式组织的。每行代表一条唯一的记录&#xff0c;每列代表记录中的一个字段。例如&#xff0c;在包含公 司员工信息的表中&#xff0c;每行代表一名员工…

19.字符串——查找三个字符串中的最大字符串(打擂台)

文章目录 前言一、题目描述 二、题目分析 三、解题 程序运行代码 四、举一反三总结 前言 本系列为字符串处理函数编程题&#xff0c;点滴成长&#xff0c;一起逆袭。 一、题目描述 查找三个字符串中的最大字符串 二、题目分析 打擂台 三、解题 程序运行代码 #include<…

从零开始:PHP实现阿里云直播的简单方法!

1. 配置阿里云直播的推流地址和播放地址 使用阿里云直播功能前&#xff0c;首先需要在阿里云控制台中创建直播应用&#xff0c;然后获取推流地址和播放地址。 推流地址一般格式为&#xff1a; rtmp://{Domain}/{AppName}/{StreamName}?auth_key{AuthKey}-{Timestamp}-{Rand…

如何使用手机制作证件照

1、打开vx搜索小&#x1f34a;x名称&#xff1a;标准证件照免冠照 2、选择你需要的证件照尺寸类型 3&#xff0e;选择手机照片生活照或者点击开始拍摄&#xff08;建议纯色的墙面好换底色&#xff09; 4&#xff0e;选择背景颜色&#xff0c;红底&#xff0c;蓝底奉背景颜色随你…

数据库管理-第121期 我为什么写文章(202301203)

数据库管理-第121期 我为什么写文章&#xff08;202301203&#xff09; 其实呢~大周末我不是太想写文章的&#xff0c;周五HaloDB起了个头还有一堆可以做的事情都计划到下周了&#xff0c;但是昨天发生了一件事情&#xff0c;让我很是不开心&#xff1a;强盗逻辑&#xff0c;白…

前端入门(五)Vue3组合式API特性

文章目录 Vue3简介创建Vue3工程使用vite创建vue-cli方式 常用 Composition API启动项 - setup()setup的执行时机与参数 响应式原理vue2中的响应式vue3中的响应式ref函数reactive函数reactive与ref对比 计算属性 - computed监视属性 - watchwatchEffect Vue3生命周期自定义hook函…

服务器数据恢复—V7000存储raid5崩溃导致上层卷无法使用的数据恢复案例

服务器数据恢复环境&#xff1a; 某品牌V7000存储中有一组由几十块硬盘组建的raid5阵列。上层操作系统为windows server&#xff0c;NTFS分区。 服务器故障&#xff1a; 有一块硬盘出现故障离线&#xff0c;热备盘自动上线替换离线硬盘。在热备盘上线同步数据的过程&#xff0c…

西南科技大学模拟电子技术实验五(集成运算放大器的应用设计)预习报告

一、计算/设计过程 设计一:用集成运放设计一个输入为0.05v,放大为-100的反相比例运算电路。 对于理想电路,反相比例运算电路的输出电压与输入电压之间的关系如下: =-100,所以 =100 若是假定R1为100k,则R2= =1k 为了减小输入级偏置电流引起的运算误差,在同相输入端…

解决:IDEA的debug模式只有第一次能拦截请求进行debug,后续所有请求全部失效

解决&#xff1a;IDEA的debug模式只有第一次能拦截请求进行debug&#xff0c;后续所有请求全部失效 一问题描述&#xff1a;IDEA的debug模式只有第一次能拦截请求进行debug&#xff0c;后续所有请求全部失效二问题原因&#xff1a;对IDEA的debug功能不熟悉或者理解有偏差三解决…

数学字体 Mathematical fonts

Mathematical fonts 数学字体&#xff1a; ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzRQSZ \\ \mathcal{ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzRQSZ} \\ \mathfrak{ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzRQSZ} \\ \mathbb{ABC…