当前位置: 首页 > news >正文

【树莓派 5B】Python 版本切换

【树莓派 5B】Python 版本切换

  • 前言
  • 整体思路
  • 具体步骤
  • 常见问题
    • Python 无法建立与 Python3 的软连接

前言

本文基于树莓派5B 32-bit 树莓派OS,以 Python-3.11.2 降级到 3.9.2 为例,总结了在树莓派上切换 Python 版本的步骤,帮助大家轻松完成 Python 版本的切换。

只需将下载本文中Python的版本号,修改为你想切换的版本号即可

参考资料:
树莓派 python3.9降级为python3.7
莓派上快速安装Python3.6.5

整体思路

系统更新 --> 安装依赖包 --> 下载并编译安装 Python 3.9.2 --> 删除旧的 Python 3 符号链接 --> 创建新的符号链接 --> 验证 Python 版本

具体步骤

1. 系统更新

首先,我们需要确保系统是最新的,以避免因为软件版本差异而导致的兼容性问题。使用以下命令来更新系统

sudo apt-get update
sudo apt-get upgrade -y
  • sudo apt-get update:更新软件包列表,确保系统获取到最新的软件包信息。
  • sudo apt-get upgrade -y:升级所有已安装的软件包,使系统保持最新状态。

2. 安装 Python 依赖环境

在安装 Python 之前,我们需要安装一些必要的依赖包,确保编译 Python 时不缺少必要的库。

依赖包括编译工具、数据库支持库和压缩文件处理库,确保 Python 的正常编译和运行(弱化版的环境)

sudo apt-get install build-essential libsqlite3-dev sqlite3 bzip2 libbz2-dev
  • build-essential:提供了构建软件所需的编译器和其他工具。
  • libsqlite3-devsqlite3:用于 SQLite 数据库支持,这是 Python 常用的数据库模块之一。
  • bzip2libbz2-dev:用于处理 .bz2 压缩文件的库,Python 依赖于这些库来解压特定格式的文件。

3. 下载 Python 3.9.2 源代码并解压

我们需要下载 Python 3.9.2 的源代码包,并将其解压缩,以便后续编译安装。

wget https://www.python.org/ftp/python/3.9.2/Python-3.9.2.tgz
tar zxvf Python-3.9.2.tgz
  • wget:从指定的 URL 下载 Python 源代码包。
  • tar zxvf:解压 .tgz 文件,其中 z 表示解压 gzip 压缩文件,x 表示解档,v 表示显示详细信息,f 指定要处理的文件。

另一种下载 Python 3.9.2 的方法

wget 下载速度可能较慢,可以使用手动拷贝的方法。

  1. 在电脑端打开以下网址下载 Python 3.9.2 的压缩包:

    https://www.python.org/ftp/python/3.9.2/Python-3.9.2.tgz

  2. 将下载的压缩包拷贝到 U 盘

  3. 将 U 盘中的压缩包拷贝到树莓派的 /home/pi 文件夹中

不要忘了,拷贝到树莓派后也要执行解压操作 tar zxvf Python-3.9.2.tgz

4. 安装编译 make

进入 Python 3.9 的源代码目录,并执行配置、编译和安装命令:

cd Python-3.9.2
sudo ./configure && sudo make && sudo make install
  • cd Python-3.9.2:进入 Python 源代码目录。
  • ./configure:检查系统环境,生成适合当前系统的编译配置文件。
  • make:根据配置文件编译 Python 源代码,生成可执行文件。
  • sudo make install:将编译生成的 Python 安装到系统中,使其可以全局使用。

ps:
CMake(./configure):生成编译路线,创建 Makefile 来链接各个文件。规定文件、代码、库直接如何链接
Make:根据生成的路线图(Makefile),跑一遍,编译源代码,生成可执行程序或库文件(已经编译好的二进制文件)
Make install:将已编译好的程序安装到系统目录中,供后续调用。(后续每次使用程序时,不是重新编译,而是执行已经编译好的二进制文件)

可以执行 python3.9 --version 来来检查 Python 3.9.2 是否安装成功

这一步完成后,Python 3.9.2 将被安装到系统中

5. 删除旧版本的符号链接

由于系统原来存在的 python3 符号链接可能指向 Python 3.11,因此我们需要先将其移除:

sudo rm /usr/bin/python3
  • sudo rm /usr/bin/python3:删除 /usr/bin/python3 这个符号链接,使得 python3 不再指向旧的 Python 3.11 版本。注意,这只是删除链接,不会删除实际的 Python 3.11 程序。

6. 建立新的符号链接

为了让系统将 python3python 命令指向 Python 3.9,我们需要创建新的符号链接:

sudo ln -s /usr/local/bin/python3.9 /usr/bin/python3
sudo ln -s /usr/bin/python3 /usr/bin/python

这两条命令确保 python3 和 python 都指向 Python 3.9

7. 验证 Python 版本
最后,确认 Python 版本切换是否成功

python3 --version
python --version

常见问题

Python 无法建立与 Python3 的软连接

执行符号链接创建命令时,有时会遇到 python 无法正确链接到 python3 的问题。这可能是由于之前的符号链接未完全移除,或者系统中存在多个 Python 版本导致冲突。

  1. 确认旧的符号链接是否已完全删除:

    ls -l /usr/bin/python3
    

    如果链接还存在,使用 sudo rm 彻底删除。

  2. 确保 /usr/local/bin/python3.9 路径正确:
    使用以下命令检查是否有可执行文件:

    ls /usr/local/bin/python3.9
    
  3. 重新创建符号链接:
    再次执行以下命令来创建新的符号链接:

    sudo ln -s /usr/local/bin/python3.9 /usr/bin/python3
    sudo ln -s /usr/bin/python3 /usr/bin/python
    

相关文章:

【树莓派 5B】Python 版本切换

【树莓派 5B】Python 版本切换 前言整体思路具体步骤常见问题Python 无法建立与 Python3 的软连接 前言 本文基于树莓派5B 32-bit 树莓派OS,以 Python-3.11.2 降级到 3.9.2 为例,总结了在树莓派上切换 Python 版本的步骤,帮助大家轻松完成 P…...

windows C++-有效使用PPL(五)

如果可能,避免错误共享 当在不同处理器上运行的多个并发任务写入位于同一高速缓存行上的变量时,会发生错误共享。 当一个任务写入一个变量时,这两个变量的缓存行将会失效。 每当缓存行失效时,每个处理器必须重新加载缓存行。 因此…...

【排序】——1.冒泡排序法(含优化)

冒泡排序 1.原理 左边大于右边交换一趟排下来最大的交换到右边来(接下来所以文章用升序举例) 从左到右,相邻元素进行比较。 每次比较一轮,就会找到序列中最大的一个(最小的一个——降序)。这个数就会从序列的最右边冒出来。 以…...

在MySQL中创建数据库和表

在MySQL中,创建数据库和表是数据库管理的基础操作。下面我将详细解释如何先创建一个数据库,然后在该数据库中创建一个或多个表。 ### 1. 创建数据库 首先,你需要登录到MySQL服务器。然后,使用CREATE DATABASE语句来创建一个新的…...

Hadoop 安装教程——单节点模式和分布式模式配置

文章目录 一、预备知识1.1 Hadoop 发行版本1.2 部署方式 二、预备条件2.1 环境准备2.2 创建新用户(可选)2.3 配置 SSH 无密码登录2.4 下载 Hadoop2.5 编辑 hadoop-env.sh 脚本2.6 编辑 dfs 和 yarn 脚本 三、单节点模式部署3.1 官方使用案例3.2 查看运行结果 四、伪分布模式部署…...

给c++小白的教程10:一维数组

好久不见!我又来更教程了。 升到初二,由于学业原因,更新速度减慢了,十分抱歉! 以后将恢复到一周一次的频率 作者只是个普通学生,做的教程多有不足,希望大家批评指正! 赫炎今天在一…...

【排序】3.希尔排序法

希尔排序(直接插入排序的优化) 1.分组思想 上图中gap为5,说明要分成5组。 这5组分别用了五种颜色的线条连接起来了。 第1组:9、4 第2组:1、8 第3组:2、6 第4组:5、3 第5组:7、5 2.缩…...

商品详情数据API接口概述(json数据格式返回参考)

商品详情数据API接口是指一种编程接口(API,Application Programming Interface),它允许开发者或系统以编程方式获取商品的详细信息。这些信息包括但不限于SKU的详细信息、商品图片、商品属性、价格、库存状态、用户评价等。当调用…...

Jmeter简介

基础介绍 Jmeter录制脚本的原始是配置一个HTTP代理,然后浏览器通过这个代理访问测试页面从而完成脚本录制。 一、下载安装 jmeter本身不需要安装,需要配置环境变量JDK,然后打开bin文件夹中的jmeter.vbs即可。建议jdk 1.7及以上版本。 基本祖…...

网页前端开发之HTML入门篇:标题标签 heading

标题标签 heading <h1>-<h6>是HTML的标题标签&#xff0c;其标签内容会呈现六个不同级别的字号&#xff0c; <h1>字号最大&#xff0c;<h6>字号最小。 示例 <html><body><h1>一级标题</h1><h2>二级标题</h2>&l…...

医院信息化与智能化系统(3)

医院信息化与智能化系统(3) 这里只描述对应过程&#xff0c;和可能遇到的问题及解决办法以及对应的参考链接&#xff0c;并不会直接每一步详细配置 如果你想通过文字描述或代码画流程图&#xff0c;可以试试PlantUML&#xff0c;告诉GPT你的文件结构&#xff0c;让他给你对应的…...

数据结构(线性表)

1线性表的定义与操作 1.1线性表的定义 线性表是一种基础的数据结构&#xff0c;其主要特点是&#xff1a;数据元素之间存在一种线性关系&#xff08;一对一&#xff09;。线性表的每一个数据元素都有一个唯一的前驱和后继&#xff0c;除了第一个元素没有前驱&#xff0c;最后…...

ArcGIS Pro SDK (十八)栅格

ArcGIS Pro SDK (十八)栅格 环境:Visual Studio 2022 + .NET6 + ArcGIS Pro SDK 3.0 栅格 1 在文件夹中打开栅格数据集 // 使用文件夹路径创建 FileSystemConnectionPath 对象。 FileSystemConnectionPath connectionPath = new FileSystemConnectionPath(new System...

c++ 对象作用域

在 C 中&#xff0c;对象的作用域&#xff08;scope&#xff09;指的是对象的生命周期以及对象在程序中可以访问的范围。作用域影响对象的创建、使用和销毁&#xff0c;主要有以下几种类型&#xff1a; 1. 局部作用域&#xff08;Local Scope&#xff09; 局部作用域的对象是…...

【无标题】海尔AI英语面试

1.自我介绍 Good morning. I am delighted to have this English interview. My name is fu guilin. I graduated from CDUT with a degree in Information engineering. During my university years, I have laid a solid foundation in my professional knowledge. I posses…...

软件设计模式------概述

一&#xff1a;简述 目的&#xff1a;为了可重用代码&#xff0c;代码更容易被他人理解&#xff0c;提高代码的可靠性。 定义&#xff1a;是一套被反复使用&#xff0c;多数人知晓&#xff0c;经过分类编目的&#xff0c;代码设计经验的总结。 &#xff08;通俗来说&#xf…...

刷题/学习网站推荐

前言&#xff1a; 最近没怎么学习&#xff0c;荒芜生活&#xff0c;学不进去&#xff0c;太累了&#xff0c;就喜欢翻翻网站有没有好用的东西分享给大家&#xff0c;正好看到一些刷题的网站&#xff08;其实也是学习的网站吧&#xff09;&#xff0c;相比学程序的很多都是力扣…...

OQE-OPTICAL AND QUANTUM ELECTRONICS

文章目录 一、征稿简介二、重要信息三、服务简述四、投稿须知五、联系咨询 一、征稿简介 二、重要信息 期刊官网&#xff1a;https://ais.cn/u/3eEJNv 三、服务简述 四、投稿须知 1.在线投稿&#xff1a;由艾思科蓝支持在线投稿&#xff0c;请将文章全文投稿至艾思科蓝投稿系…...

在 Spring MVC 应用程序中使用 WebMvcTest 注释有什么用处?

大家好&#xff0c;我是锋哥。今天分享关于【在 Spring MVC 应用程序中使用 WebMvcTest 注释有什么用处&#xff1f;】面试题&#xff1f;希望对大家有帮助&#xff1b; 在 Spring MVC 应用程序中使用 WebMvcTest 注释有什么用处&#xff1f; 1000道 互联网大厂Java工程师 精选…...

Chromium html<textarea>c++接口定义

<textarea>&#xff1a;文本区域元素 <textarea> HTML 元素是一个多行纯文本编辑控件&#xff0c;适用于允许用户输入大量自由格式文本的场景。 例子&#xff1a; <!DOCTYPE html> <html> <head> <meta charset"utf-8"> &l…...

Docker 离线安装指南

参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性&#xff0c;不同版本的Docker对内核版本有不同要求。例如&#xff0c;Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本&#xff0c;Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...

Ubuntu系统下交叉编译openssl

一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机&#xff1a;Ubuntu 20.04.6 LTSHost&#xff1a;ARM32位交叉编译器&#xff1a;arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...

设计模式和设计原则回顾

设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...

【位运算】消失的两个数字(hard)

消失的两个数字&#xff08;hard&#xff09; 题⽬描述&#xff1a;解法&#xff08;位运算&#xff09;&#xff1a;Java 算法代码&#xff1a;更简便代码 题⽬链接&#xff1a;⾯试题 17.19. 消失的两个数字 题⽬描述&#xff1a; 给定⼀个数组&#xff0c;包含从 1 到 N 所有…...

WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成

厌倦手动写WordPress文章&#xff1f;AI自动生成&#xff0c;效率提升10倍&#xff01; 支持多语言、自动配图、定时发布&#xff0c;让内容创作更轻松&#xff01; AI内容生成 → 不想每天写文章&#xff1f;AI一键生成高质量内容&#xff01;多语言支持 → 跨境电商必备&am…...

自然语言处理——Transformer

自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效&#xff0c;它能挖掘数据中的时序信息以及语义信息&#xff0c;但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN&#xff0c;但是…...

【Oracle】分区表

个人主页&#xff1a;Guiat 归属专栏&#xff1a;Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据 Power Query 具有大量专门帮助您清理和准备数据以供分析的功能。 您将了解如何简化复杂模型、更改数据类型、重命名对象和透视数据。 您还将了解如何分析列&#xff0c;以便知晓哪些列包含有价值的数据&#xff0c;…...

HashMap中的put方法执行流程(流程图)

1 put操作整体流程 HashMap 的 put 操作是其最核心的功能之一。在 JDK 1.8 及以后版本中&#xff0c;其主要逻辑封装在 putVal 这个内部方法中。整个过程大致如下&#xff1a; 初始判断与哈希计算&#xff1a; 首先&#xff0c;putVal 方法会检查当前的 table&#xff08;也就…...

【VLNs篇】07:NavRL—在动态环境中学习安全飞行

项目内容论文标题NavRL: 在动态环境中学习安全飞行 (NavRL: Learning Safe Flight in Dynamic Environments)核心问题解决无人机在包含静态和动态障碍物的复杂环境中进行安全、高效自主导航的挑战&#xff0c;克服传统方法和现有强化学习方法的局限性。核心算法基于近端策略优化…...