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

介绍

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

使用shell自动化安装教程

1. 复制脚本

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

#!/bin/bash

installDir="/opt/module/python"
# 可以修改为自己想安装的版本
version="3.8.1"

if [ ! -d "${installDir}" ]; then
  sudo mkdir -p "${installDir}"
  if [ $? -eq 0 ]; then
    echo "安装目录${installDir}已创建"
  else
    echo "请确保您有足够的权限来创建目录,请增加权限后再次执行"
    exit 1
  fi
fi
# 下载python安装所需的工具和库
sudo yum install -y gcc openssl-devel bzip2-devel libffi-devel
if [ $? -eq 0 ]; then
  echo "python安装所需的工具和库下载成功"
else
  echo "python安装所需的工具和库下载失败,请查看异常信息后重试"
  exit 1
fi
if [ ! -f /tmp/Python-$version.tgz ]; then
  wget https://www.python.org/ftp/python/$version/Python-$version.tgz -P /tmp
  if [ $? -eq 0 ]; then
    echo "/tmp/Python-$version.tgz下载成功"
  else
    echo "/tmp/Python-$version.tgz下载失败,请重试或手动下载到/tmp目录下再次执行"
    echo "下载地址:https://www.python.org/ftp/python/$version/Python-$version.tgz"
    exit 1
  fi
fi
if [ -d $installDir/Python-$version ]; then
  echo "$installDir/Python-$version 已存在,正在删除"
  sudo rm -rf $installDir/Python-$version
fi
tar -zxvf /tmp/Python-$version.tgz -C $installDir
if [ $? -eq 0 ]; then
  echo "/tmp/Python-$version.tgz解压成功"
else
  echo "/tmp/Python-$version.tgz解压失败,请查看异常信息后重试"
  exit 1
fi

cd $installDir/Python-$version
# 配置Python编译和安装过程的参数
#./configure --enable-optimizations
$installDir/Python-"$version"/configure
if [ $? -eq 0 ]; then
  echo "配置Python编译和安装过程的参数成功"
else
  echo "配置Python编译和安装过程的参数失败,请查看异常信息后重试"
  exit 1
fi
# 自动化构建和编译python
make -j 2
if [ $? -eq 0 ]; then
  echo "自动化构建和编译python成功"
else
  echo "自动化构建和编译python失败,请查看异常信息后重试"
  exit 1
fi
#使用altinstall而不是install可以避免覆盖系统默认的Python 2.x版本。
sudo make altinstall
if [ $? -eq 0 ]; then
  echo "altinstall成功"
else
  echo "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 ]; then
  echo "修改Python3作为默认版本成功"
else
  echo "修改Python3作为默认版本失败,请查看异常信息后重试"
  exit 1
fi
# 验证是否安装成功
if [[ $(python --version) == "Python $version" ]]; then
  echo "python3下载、安装、配置成功"
fi
# 解决安装python3后使用不了yum问题
yum_file="/usr/bin/yum"
down_file="/usr/libexec/urlgrabber-ext-down"
if grep -q "#!/usr/bin/python2" "$yum_file"; then
    echo "#!/usr/bin/python2已设置"
elif grep -q "#!/usr/bin/python" "$yum_file"; then
    sudo sed -i 's|#!/usr/bin/python|#!/usr/bin/python2|' "$yum_file"
    echo "#!/usr/bin/python2设置成功"
else
    echo "在 $yum_file 中找不到Python解释器"
fi
if grep -q "#! /usr/bin/python2" "$down_file"; then
    echo "#! /usr/bin/python2已设置"
elif grep -q "#! /usr/bin/python" "$down_file"; then
    sudo sed -i 's|#! /usr/bin/python|#! /usr/bin/python2|' "$down_file"
    echo "#!/usr/bin/python设置成功"
else
    echo "在 $down_file中找不到Python解释器"
fi
# 安装pip
#sudo yum install python3-pip
# 更新pip,解决pip下载一些python包失败问题
python -m pip install --upgrade pip

exit 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的安装和配置过程。

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

掌握JavaScript的数学与时间魔法:Math和Date对象详解

​🌈个人主页:前端青山 🔥系列专栏:JavaScript篇 🔖人终将被年少不可得之物困其一生 依旧青山,本期给大家带来JavaScript篇专栏内容:JavaScript-Math和Date对象详解 目录 Math对象(Math对象不能new!!!!) …

ubuntu22.04离线手动安装openstack yoga和ceph quincy

目录 写在前面材料准备一. OpenStack部1. 创建虚拟网络和虚拟机2. 配置离线环境3. 环境准备3.1 配置网络3.2 配置主机名并配置解析3.3 时间调整3.4 安装openstack客户端3.5 安装部署MariaDB3.6 安装部署RabbitMQ控制节点操作3.7 安装部署Memcache控制节点操作 4. 部署配置keyst…

etlbox.3.1.0 for NET 轻量级 ETL数据集成库 Crack

适用于 .NET 的轻量级 ETL(提取、转换、加载)工具箱和数据集成库 高度可定制 厌倦了使用几乎不可能实现复杂需求的用户界面?使用 ETLBox,可以轻松编写适合您独特需求的代码。插入您自己的逻辑或修改现有行为以满足您的特定要求。 …

SpringCloud Gateway

目录 一、gateway简介二、gateway快速入门2.1 引入依赖2.2 编写启动类2.3 编写基础配置和路由规则 三、断言工厂四、过滤器工厂4.1 路由过滤器的种类4.2 请求头过滤器4.3 默认过滤器 五、全局过滤器5.1 全局过滤器作用5.2 自定义全局过滤器5.3 过滤器执行顺序 六、跨域问题6.1 …

思维导图应用程序:iThoughts 6.5 Crack

为什么选择 iThoughts? 有很多思维导图应用程序。他们中的许多人都非常好。那么您为什么要考虑 iThoughts? 免责声明:我创建了 iThoughts - 这是我过去 12 年的生活 - 我有点偏见! 大多数思维导图应用程序都提供相同的基本功能级…

【每日OJ —— 572. 另一棵树的子树】

每日OJ —— 572. 另一棵树的子树 1.题目:572. 另一棵树的子树2.解法2.1.算法讲解2.2.代码实现2.3.提交通过展示 1.题目:572. 另一棵树的子树 2.解法 2.1.算法讲解 通过深度优先遍历,来判断二叉树root的每个节点的值是否和subRoot的每个节点…

微服务实战系列之MemCache

前言 书接前文,马不停蹄,博主继续书写Cache的传奇和精彩。 Redis主要用于数据的分布式缓存,通过设置缓存集群,实现数据的快速响应,同时也解决了缓存一致性的困扰。 EhCache主要用于数据的本地缓存,因无法保…

git-6

1.如何用project管理issue? 用project看板管理issue 有五种类型:None、Basic kanban、Automated kanban、Automated kanban with reviews、Bug triage 首先选用Bug triage 利用看板就会很直观,很便捷,Issues也支持,有…

一文搞懂设计模式之责任链模式

大家好,我是晴天。我们又见面了,本周我们继续学习设计模式,本周将同大家一起学习责任链模式。 场景引入 我们回想一下自己曾经经历过的考学场景,我们是如何一步一步考上大学的(为了简化过程只提取核心环节&#xff09…

【超全】React学习笔记 中:进阶语法与原理机制

React学习笔记 React系列笔记学习 上篇笔记地址:【超全】React学习笔记 上:基础使用与脚手架 下篇笔记地址:【超全】React学习笔记 下:路由与Redux状态管理 React进阶组件概念与使用 1. React 组件进阶导读 在掌握了 React 的基…

【halcon】C# halcon 内存暴增

1 读取图片需要及时手动释放 一个6M的图片通过halcon进行加载&#xff0c;大约会消耗200M的内存&#xff0c;如果等待GC回收&#xff0c;而你又在不停的读取图片&#xff0c;你的内存占用&#xff0c;将在短时间内飙升。 2 halcon控件显示图片需要清空。 /// <summary>…

东南大学与OpenHarmony携手共建开源生态,技术俱乐部揭牌成立并迎来TSC专家进校园

11月25日,OpenAtom OpenHarmony(以下简称“OpenHarmony”)项目群技术指导委员会(以下简称“TSC”)与东南大学携手,于东南大学九龙湖校区金智楼一楼报告厅举办了“东南大学OpenHarmony技术俱乐部成立仪式暨OpenHarmony TSC专家进校园”活动。此次盛会标志着OpenHarmony开源社区和…

MATLAB 自抗扰控制 - Active Disturbance Rejection Control

系列文章目录 MATLAB 模型参考自适应控制 - Model Reference Adaptive Control 文章目录 系列文章目录前言一、控制器结构1.1 一阶逼近1.2 二阶逼近 二、指定控制器参数参考 前言 自抗扰控制 (ADRC) 是一种无模型控制方法&#xff0c;适用于为具有未知动态特性以及内部和外部…

【深度学习】Adversarial Diffusion Distillation,SDXL-Turbo 一步出图

代码&#xff1a; https://huggingface.co/stabilityai/sdxl-turbo 使用 SDXL-Turbo 是SDXL 1.0的精炼版本&#xff0c;经过实时合成训练。SDXL-Turbo 基于一种称为对抗扩散蒸馏 (ADD) 的新颖训练方法&#xff08;请参阅技术报告&#xff09;&#xff0c;该方法允许在高图像质…

linux防火墙NAT表原理及实操

目录 一、iptables保存规则 1、持久保存iptables规则 2、加载规则 3、开机自动重载规则 二、自定义链 1、创建自定义链 2、修改自定义链名 3、创建规则 4、删除自定义链 三、NAT表 1、SNAT 2、DNAT 一、iptables保存规则 使用iptables命令定义的规则&#xff0c;都…

数据链路层之网桥

学习的最大理由是想摆脱平庸&#xff0c;早一天就多一份人生的精彩&#xff1b;迟一天就多一天平庸的困扰。各位小伙伴&#xff0c;如果您&#xff1a; 想系统/深入学习某技术知识点… 一个人摸索学习很难坚持&#xff0c;想组团高效学习… 想写博客但无从下手&#xff0c;急需…

linux查看进程_静态查看进程_动态查看进程

4.1.3 查看进程 4.1.3.1 静态查看进程&#xff1a;ps ps命令的基本语法如下&#xff1a; ps [options] 参数说明&#xff1a; ps 的参数非常多, 在此仅列出几个常用的参数并大略介绍含义 -A 列出所有的进程 -w 显示加宽可以显示较多的资讯 -au 显示较详细的资讯 -aux 显…

设计模式之道:解构结构型设计模式的核心原理

解构常见的三种结构型设计模式的核心原理 一、引言&#xff1a;如何学习设计模式&#xff1f;二、责任链模式2.1、代码结构2.2、符合的设计原则2.3、案例分析&#xff1a;nginx 阶段处理2.4、小结 三、装饰器模式3.1、代码结构3.2、符合的设计原则3.3、小结 四、组合模式4.1、代…

TLS协议握手流程

浅析 TLS&#xff08;ECDHE&#xff09;协议的握手流程&#xff08;图解&#xff09; - 知乎 前言 通过 wireshark 抓取 HTTPS 包&#xff0c;理解 TLS 1.2 安全通信协议的握手流程。 重点理解几个点&#xff1a; TLS 握手流程&#xff1a;通过 wireshark 抓取 HTTPS 包理解…

【iOS】数据持久化(三)之SQLite3及其使用

目录 数据库简介什么是SQLite&#xff1f;在Xcode引入SQLite APISQL语句的种类存储字段类型 SQLite的使用创建数据库创建表和删表数据表操作增&#xff08;插入数据INSERT&#xff09;删&#xff08;删除数据DELETE&#xff09;改&#xff08;更新数据UPDATE&#xff09;查&…