Python Linux解压安装脚本

本脚本用于安装python3.x, 需要指定python版本,如12代表3.12
安装文件下载自 python-build-standalone
我下载的文件后缀是:-x86_64-unknown-linux-gnu-pgo-full.tar.zst,根据需要自行下载
注意:install_only或tar.gz包的目录没有install这一层文件夹

#!/bin/bash# 参数处理# 第一个参数为python版本,3.x的后一位,必填
# 第二个参数为zip文件夹路径,默认为~/Downloads# 使用示例
# ./install_python.sh -v 12 -d /home/gxc/Downloadsshow_help() {echo "Usage: $0 [options]"echo "  -h, --help            显示帮助信息"echo "  -v, --version         指定python版本,如12代表3.12"echo "  -d, --dir             指定zip文件夹路径,默认为~/Downloads"echo "  -p, --prefix          指定python安装目录,默认为/usr/local/python3x"echo "  -b, --bin             指定python软链接目录,默认为/usr/bin/"echo "  -n, --name            指定python安装目录名,默认为python3x"
}# 解析参数
while [ "$#" -gt 0 ]; docase "$1" in-h|--help)show_helpexit 0;;-v|--version)v=$2shift 2;;-d|--dir)zip_dir=$2shift 2;;-p|--prefix)prefix=$2shift 2;;-b|--bin)bin=$2shift 2;;-n|--name)name=$2shift 2;;*)echo "Unknown option: $1"show_helpexit 1;;esac
doneif [ -z "$v" ]; thenecho "Error: No python3.x version specified, please specify the version, like '12'"exit 1
fipython_version="3.$v"
echo "version: $python_version"zip_dir=${zip_dir:-~/Downloads}
echo "zip dir: $zip_dir"prefix=${prefix:-/usr/local/python3$v}
bin=${bin:-/usr/bin/}
name=${name:-python3$v}py_bin=$prefix/install/bin/python$python_version
py_bin_link=$bin$name
echo "link: $py_bin -> $py_bin_link"# 进入zip_dir
echo "enter $zip_dir"
pushd $zip_dir > /dev/null 2>&1# 使用find命令搜索最新的.zst文件
fp=$(find . -type f -name "cpython-$python_version*.zst" -printf '%T+ %p\n' | sort | tail -n 1 | cut -d' ' -f2-)# 检查是否找到了文件
if [ -z "$fp" ]; thenecho "Error: No .zst file found in the directory: $zip_dir"exit 1
elseecho "The found .zst file is: $fp"read -p "Do you want to continue? (y/n): " answercase $answer in[Yy]* )echo "Continuing..."# 在这里添加你想继续执行的命令;;[Nn]* )echo "Exiting..."exit 0;;* )echo "Invalid input. Exiting..."exit 1;;esac
fiecho "file: $fp"# 删除旧的python解压目录
if [ -a 'python' ]
thenecho "dir 'python' exists, remove it"rm -rf python
fi# 解压
echo "unzip $fp"
tar xf $fp# 检查解压后的文件
echo "check unzip file"
if [ ! -d 'python' ]
thenecho "Error: No 'python' directory found in the zip file: $fp"exit 1
fi
if [ ! -x "./python/install/bin/python$python_version" ]
thenecho "Error: No './python/install/bin/python$python_version' found in the zip file: $fp"exit 1
fi# 删除旧的python安装目录
if [ -a $prefix ] 
thenecho "remove old python"sudo rm -rf $prefix
fi# 移动解压的python到指定目录
echo "move python to $prefix"
sudo mv ./python $prefix# 创建软链接
echo "link $py_bin -> $py_bin_link"
sudo ln -sf $py_bin $py_bin_link# 回到原目录
popd > /dev/null 2>&1echo "finish install python$python_version"

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

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

相关文章

JAVA基础语法 Day11

一、Set集合 Set特点:无序(添加数据的顺序和获取出的数据顺序不一致),不重复,无索引 public class demo1 {public static void main(String[] args) {//1.创建一个集合//HashSet特点:无序,不重…

算法笔记(七)——哈希表

文章目录 两数之和判定是否互为字符重排存在重复元素存在重复元素 II字母异位词分组 哈希表:一种存储数据的容器; 可以快速查找某个元素,时间复杂度O(1); 当频繁查找某一个数时,我们可以使用哈希表 创建一个容器&#…

SpringBoot使用EasyPoi根据模板导出word or pdf

1、导出效果 1.1 wrod 1.2 pdf 2、依赖 <!--word--><dependency><groupId>cn.afterturn</groupId><artifactId>easypoi-base</artifactId><version>4.3.0</version></dependency><dependency><groupId>cn.…

ESP32 Bluedroid 篇(1)—— ibeacon 广播

前言 前面我们已经了解了 ESP32 的 BLE 整体架构&#xff0c;现在我们开始实际学习一下Bluedroid 从机篇的广播和扫描。本文将会以 ble_ibeacon demo 为例子进行讲解&#xff0c;需要注意的一点是。ibeacon 分为两个部分&#xff0c;一个是作为广播者&#xff0c;一个是作为观…

[SQL] SQL语句注意事项

语法: SQL可以单行或者多行书写&#xff0c;以分号结尾SQL可以使用空格/缩进来增强语句的可读性不区分大小写&#xff0c;但是关键字建议使用大写&#xff0c;这也是一个良好的习惯。注释&#xff1a;单行注释: -- 或者 # &#xff0c;#是MySQL特有的&#xff0c;建议统一使用…

Unity中Socket_TCP异步连接,加入断线检测以及重连功能

1、服务端 using System; using System.Collections.Generic; using System.Text; #region 命名空间 using System.Net; using System.Net.Sockets; using System.Threading; using UnityEngine; #endregionnamespace AsynServerConsole {/// <summary>/// Tcp协议异步通…

项目-坦克大战学习-爆炸特效消除

对于爆炸特效的消除有个非常简单的想法&#xff0c;给爆炸类设置一个bool检测是否爆炸完成&#xff0c;初始为false在爆炸特效4图片索引处检测&#xff0c;如果索引为4&#xff08;所有图片播放完成&#xff09;那么将bool改为true public bool isboomfalse; if(index4) { …

C++(string类的实现)

1. 迭代器、返回capacity、返回size、判空、c_str、重载[]和clear的实现 string类的迭代器的功能就类似于一个指针&#xff0c;所以我们可以直接使用一个指针来实现迭代器&#xff0c;但如下图可见迭代器有两个&#xff0c;一个是指向的内容可以被修改&#xff0c;另一个则是指…

Swagger配置且添加小锁(asp.net)(笔记)

此博客是基于 asp.net core web api(.net core3.1)框架进行操作的。 一、安装Swagger包 在 NuGet程序包管理中安装下面的两个包&#xff1a; swagger包&#xff1a;Swashbuckle.AspNetCore swagger包过滤器&#xff1a;Swashbuckle.AspNetCore.Filters 二、swagger注册 在…

php与python建站的区别有哪些

php与Python建站的区别&#xff1a; 1、语言层面Python的特性比php好&#xff0c;更加规范。 2、Python的性能比php高。 3、有只需要启动服务的时候执行一次的代码&#xff0c;在php里每个请求都会被执行一次&#xff0c;Python不需要。虽然php可以通过缓存缩短这方面的差距…

Java题集(从入门到精通)04

此系列文章收录大量Java经典代码题&#xff08;也可以算是leetcode刷题指南&#xff09;&#xff0c;希望可以与大家一起努力学好Java。3、2、1&#xff0c;请看&#xff01; 目录 一、北京地铁计价程序 二、人名币兑换 三、各位数字之和 一、北京地铁计价程序 【问题描述…

【接口测试】任务1:登录接口

需要技能竞赛软件测试资料的同学们可s聊我&#xff0c;详细了解 任务实现要求 根据系统管理员—登录—接口API文档&#xff0c;编写接口测试用例&#xff0c;分别使用PostMan及JMeter进行接口测试&#xff0c;需要检查系统接口是否能正常工作&#xff0c;返回值是否正确&#…

RCE+[伪协议综合]

<aside> &#x1f4a1; 伪协议种类 </aside> **1 file:// — 访问本地文件系统 2 http:// — 访问 HTTP(s) 网址 3 ftp:// — 访问 FTP(s) URLs 4 php:// — 访问各个输入/输出流&#xff08;I/O streams&#xff09; 5 zlib:// — 压缩流 6 data:// — 数据&am…

使用CSS实现酷炫加载

使用CSS实现酷炫加载 效果展示 整体页面布局 <div class"container"></div>使用JavaScript添加loading加载动画的元素 document.addEventListener("DOMContentLoaded", () > {let container document.querySelector(".container&q…

初始爬虫11

1.斗鱼selenium爬取 # -*- coding: utf-8 -*- from selenium import webdriver from selenium.webdriver.common.by import By import timeclass Douyu(object):def __init__(self):self.url https://www.douyu.com/directory/allself.driver webdriver.Chrome()self.driver…

超分辨率重构论文集合

《Detection of Tea Leaf Blight in Low-Resolution UAV Remote Sensing Images》 发表信息&#xff1a;发表于《IEEE TRANSACTIONS ON GEOSCIENCE AND REMOTE SENSING》2024 年&#xff0c;作者 Gensheng Hu 等&#xff0c;来自安徽大学等。核心内容 背景&#xff1a;茶叶枯萎…

Scala 字符串

Scala 字符串 Scala 是一种多范式的编程语言&#xff0c;它结合了面向对象和函数式编程的特点。在 Scala 中&#xff0c;字符串是不可变的&#xff0c;这意味着一旦创建了一个字符串&#xff0c;就不能更改它。Scala 字符串由 Java 字符串支持&#xff0c;因此 Scala 字符串的…

在线css像素px到Em的转换器

具体请前往&#xff1a;在线Px转Em工具--将绝对像素(px)长度单位转换为相对长度em

热补丁反调试API Hook—上跳/下跳

以 IsDebuggerPresent 函数为例&#xff0c;可以看到可以上跳&#xff08;简单&#xff09;&#xff0c;也可以下跳&#xff08;复杂&#xff09;。 上跳&#xff1a; BYTE NewCodes[2] { 0xEB,0xF9 }; BYTE JmpCode[5] { 0xE9,0 }; BYTE oldCodes[2] { 0 };BOOL Mydebug() …