CentOS 7 上自动安装 Python 3.9 脚本

news2024/12/22 18:51:00

安装

在 CentOS 7 上安装 Python 3.9 可以通过编写一个 Shell 脚本来自动化这一过程。以下是一个示例脚本,它将帮助你在 CentOS 7 上安装 Python 3.9:

#!/bin/bash

# 脚本设置失败终止
set -e

# 更新系统
# sudo yum update -y

# 安装依赖
sudo yum install -y gcc openssl-devel bzip2-devel libffi-devel zlib-devel wget make

# 设置 Python 版本
PYTHON_VERSION=3.9.18
PYTHON_TGZ=Python-$PYTHON_VERSION.tgz
PYTHON_SRC_DIR=Python-$PYTHON_VERSION

# 创建临时目录并进入
mkdir -p /tmp/python-install
cd /tmp/python-install

# 检查是否已有源码包
if [ ! -f $PYTHON_TGZ ]; then
    echo "Downloading Python $PYTHON_VERSION source..."
    wget https://www.python.org/ftp/python/$PYTHON_VERSION/$PYTHON_TGZ
else
    echo "Source package $PYTHON_TGZ already exists, skipping download."
fi

# 解压下载的文件(如果目录不存在)
if [ ! -d $PYTHON_SRC_DIR ]; then
    tar xzf $PYTHON_TGZ
fi

# 进入解压后的目录
cd $PYTHON_SRC_DIR

# 配置源文件
./configure --enable-optimizations

# 编译并安装
make altinstall

# 验证安装
python3.9 --version

# 清理临时文件
cd /
rm -rf /tmp/python-install

echo "Python 3.9 installation complete"

换源

为了加速 Python 包的安装,可以配置 pip 使用阿里云的镜像源。以下是在 Linux 系统上配置 pip 使用阿里云镜像源的步骤:

配置步骤

  1. 创建或编辑配置文件

    pip 的配置文件通常位于用户主目录下的 .pip 目录中。如果该目录不存在,可以创建它。

    mkdir -p ~/.pip
    
  2. 编辑配置文件 pip.conf

    使用你喜欢的文本编辑器(例如 nanovim 等)编辑或创建 pip.conf 文件:

    vim ~/.pip/pip.conf
    
  3. 添加阿里云镜像源

    pip.conf 文件中,添加以下内容:

    [global]
    index-url = https://mirrors.aliyun.com/pypi/simple/
    
    [install]
    trusted-host=mirrors.aliyun.com
    

    这将设置 pip 使用阿里云的镜像源,并将其标记为受信任的主机。

  4. 保存并退出

    保存文件并退出编辑器。如果使用 nano,按 CTRL + O 保存,然后按 CTRL + X 退出。

  5. 验证配置

    你可以通过安装一个包来验证配置是否生效:

    pip3 install <some-package-name> --verbose
    

    使用 --verbose 可以显示详细的安装过程,确保它正在使用你配置的镜像源。

注意事项

  • 确保配置文件的路径和名称正确:在 Windows 上,配置文件为 %APPDATA%\pip\pip.ini
  • 如果你使用的是系统范围的配置文件,则可能需要以管理员权限编辑 /etc/pip.conf
  • 使用镜像源可以大大加速包的下载和安装,但请确保镜像源的可用性和稳定性。
  • 如果在使用过程中遇到任何问题,可以去掉镜像配置并尝试使用默认的 PyPI 源。

通过以上步骤,你可以成功配置 pip 使用阿里云的 Python 包镜像源,从而加快包的下载速度。


替换系统Python(有需要的话)

如果你希望用新编译的 Python 版本替换系统默认的 Python 版本,需要特别小心,因为这可能会影响系统中的某些工具和脚本,尤其是在某些 Linux 发行版中,很多系统工具依赖于默认的 Python 版本。以下是一些建议和步骤,以安全地替换系统默认的 Python 版本:

步骤

  1. 备份现有设置:

    • 在进行任何更改之前,备份当前的 Python 可执行文件和配置,以便在出现问题时可以恢复。
  2. 编译和安装新版本:

    • 使用 make install 而不是 make altinstall,这样会将新版本安装为系统默认的 Python。
    ./configure --enable-optimizations
    make
    sudo make install
    

    这将安装 Python 并创建 pythonpython3 等符号链接指向新安装的版本。

  3. 更新符号链接:

    • 确保 /usr/bin/python/usr/bin/python3 符号链接指向新版本的 Python 可执行文件。
    sudo ln -sf /usr/local/bin/python3.9 /usr/bin/python
    sudo ln -sf /usr/local/bin/python3.9 /usr/bin/python3
    
  4. 验证安装:

    • 检查 Python 版本以确认安装成功。
    python --version
    python3 --version
    
  5. 测试系统工具:

    • 运行系统工具和脚本以确保它们在新的 Python 环境中正常工作。如果遇到任何问题,可能需要手动调整或修复这些工具的兼容性。

注意事项

  • 系统依赖: 确保你了解系统默认 Python 版本的所有依赖项,替换它可能导致某些系统功能失效。

  • 环境管理工具: 考虑使用 pyenvvirtualenv 等工具来管理 Python 环境。这些工具允许你在不影响系统 Python 的情况下灵活地切换和管理不同的 Python 版本。

  • 重置计划: 制定一个计划,以便在新版本出现问题时快速恢复到原来的 Python 版本。

通过仔细的操作和周密的计划,你可以安全地替换系统默认的 Python 版本,但请始终意识到可能的风险。

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

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

相关文章

网络安全防范

实践内容 学习总结 PDR&#xff0c;$$P^2$$DR安全模型。 防火墙&#xff08;Firewall&#xff09;&#xff1a; 网络访问控制机制&#xff0c;布置在网际间通信的唯一通道上。 不足&#xff1a;无法防护内部威胁&#xff0c;无法阻止非网络传播形式的病毒&#xff0c;安全策略…

GhostRace: Exploiting and Mitigating Speculative Race Conditions-记录

文章目录 论文背景Spectre-PHT&#xff08;Transient Execution &#xff09;Concurrency BugsSRC/SCUAF和实验条件 流程Creating an Unbounded UAF WindowCrafting Speculative Race ConditionsExploiting Speculative Race Conditions poc修复flush and reload 论文 https:/…

c4d动画怎么导出mp4视频,c4d动画视频格式设置

宝子们&#xff0c;今天来给大家讲讲 C4D 咋导出mp4视频的方法。通过用图文教程的形式给大家展示得明明白白的&#xff0c;让你能轻松理解和掌握&#xff0c;不管是理论基础&#xff0c;还是实际操作和技能技巧&#xff0c;都能学到&#xff0c;快速入门然后提升自己哦。 c4d动…

你的第一个博客-第一弹

使用 Flask 开发博客 Flask 是一个轻量级的 Web 框架&#xff0c;适合小型应用和学习项目。我们将通过 Flask 开发一个简单的博客系统&#xff0c;支持用户注册、登录、发布文章等功能。 步骤&#xff1a; 安装 Flask 和其他必要库&#xff1a; 在开发博客之前&#xff0c;首…

嵌入式单片机的运行方式详解

程序的运行方式轮询系统 指的是在程序运行时,首先对所有的硬件进行初始化,然后在主程序中写一个死循环,需要运行的功能按照顺序进行执行,轮询系统是一种简单可靠的方式,一般适用于在只需要按照顺序执行的并且没有外部事件的影响的情况下。 程序的运行过程中出现如按键等需…

学技术学英文:SpringBoot的内置监控组件-Spring Boot Actuator

导读&#xff1a; Spring Boot Actuator是Spring Boot提供的一个模块&#xff0c;简单配置后就能开启&#xff0c;属于拿来即用&#xff0c;具体功能如下&#xff1a; 监控和管理Spring Boot应用 Spring Boot Actuator提供了一组REST端点和命令行工具&#xff0c;用于查看应…

「Mac畅玩鸿蒙与硬件45」UI互动应用篇22 - 评分统计工具

本篇将带你实现一个评分统计工具&#xff0c;用户可以对多个选项进行评分。应用会实时更新每个选项的评分结果&#xff0c;并统计平均分。这一功能适合用于问卷调查或评分统计的场景。 关键词 UI互动应用评分统计状态管理数据处理多目标评分 一、功能说明 评分统计工具允许用…

压缩glb模型文件

使用?gltf-pipeline进行压缩&#xff1a; GitHub地址[这里是图片001]https://github.com/CesiumGS/gltf-pipeline 1. 安装gltf-pipeline npm install -g gltf-pipeline2. 在glb文件目录打开cmd进行命令行压缩&#xff1a; // cmd: gltf-pipeline -i glb.glb -d -s以下是 -…

创建SpringBoot项目的五种方式

1. 使用SpringBoot官方模板创建 1.1 IDEA集成创建 File > new Project 目前SpringBoot官方对于SpringBoot模板版本都比较新&#xff0c;所以对Java的依赖版本也很新&#xff0c;这里可以看到已经不支持jdk8了&#xff0c;并且只有SpringBoot3版本 我们选择好之后点击…

软件维护的实施

软件维护活动 (1) 维护机构 除了较大的软件开发公司外&#xff0c;通常在软件维护工作方面&#xff0c;不保持正式的维护机构。维护往往是在没有计划的情况下进行的。虽然不要求建立一个正式的维护机构&#xff0c;但是在开发部门&#xff0c;确立一个非正式的维护机构则是非常…

stm32 rtc 详解

目录 L151 RTC 唤醒代码 方式一 通过 RTC Alarm Interrupt&#xff1a;(基本和F1系列一样)&#xff1a; L151 RTC 唤醒代码 方式二 通过 RTC WakeUp Interrupt F103VE RTC 闹钟唤醒代码 &#xff08;103RC 没有闹钟中断&#xff09;&#xff1a; RTC&#xff08;real time…

arcgisPro相接多个面要素转出为完整独立线要素

1、使用【面转线】工具&#xff0c;并取消勾选“识别和存储面邻域信息”&#xff0c;如下&#xff1a; 2、得到的线要素&#xff0c;如下&#xff1a;

机器人国际会议IROS论文latex模板

机器人国际会议IROS论文latex模板 文档 root.tex 可以配置为 US Letter 纸或 A4。请注意以下重要行&#xff1a;\documentclass[letterpaper, 10 pt, Conference]{ieeeconf} % 如果需要 a4paper&#xff0c;请注释掉此行%\documentclass[a4paper, 10pt, Conference]{ieeeconf} …

JVM和数据库面试知识点

JVM内存结构 主要有几部分&#xff1a;堆、栈、方法区和程序计数器 堆是JVM中最大的一块内存区域&#xff0c;用于存储对象实例&#xff0c;一般通过new创建的对象都存放在堆中。堆被所有的线程共享&#xff0c;但是它的访问时线程不安全的&#xff0c;通常通过锁的机制来保证线…

数据结构:栈和队列的实现

栈&#xff1a;一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。 进行数据插入和删除操作的一端 称为栈顶&#xff0c;另一端称为栈底。 栈中的数据元素遵守后进先出 LIFO &#xff08; Last In First Out &#xff09;的原则。 压栈&#xff1a;栈…

实现 WebSocket 接入文心一言

目录 什么是 WebSocket&#xff1f; 为什么需要 WebSocket&#xff1f; HTTP 的局限性 WebSocket 的优势 总结&#xff1a;HTTP 和 WebSocket 的区别 WebSocket 的劣势 WebSocket 常见应用场景 WebSocket 握手过程 WebSocket 事件处理和生命周期 WebSocket 心跳机制 …

开源轮子 - Logback 和 Slf4j

spring boot内置&#xff1a;Logback 文章目录 spring boot内置&#xff1a;Logback一&#xff1a;Logback强在哪&#xff1f;二&#xff1a;简单使用三&#xff1a;把 log4j 转成 logback四&#xff1a;日志门面SLF4J1&#xff1a;什么是SLF4J2&#xff1a;SLF4J 解决了什么痛…

MFC/C++学习系列之简单记录13

MFC/C学习系列之简单记录13 前言memsetList Control代码注意 总结 前言 今天记录一下memset和List control 的使用吧&#xff01; memset memset通常在初始化变量或清空内存区域的时候使用&#xff0c;可以对变量设定特定的值。 使用&#xff1a; 头文件&#xff1a; C&#…

Layui table不使用url属性结合laypage组件实现动态分页

从后台一次性获取所有数据赋值给 Layui table 组件的 data 属性&#xff0c;若数据量大时&#xff0c;很可能会超出浏览器字符串最大长度&#xff0c;导致渲染数据失败。Layui table 结合 laypage 组件实现动态分页可解决此问题。 HTML增加分页组件标签 在table后增加一个用于…

网络方案设计

一、网络方案设计目标 企业网络系统的构成 应用软件 计算平台 物理网络及拓扑结构 网络软件及工具软件 网络互连设备 广域网连接 无论是复杂的&#xff0c;还是简单的计算机网络&#xff0c;都包括了以下几个基本元素 &#xff1a; 应用软件----支持用户完成专门操作的软件。…