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

server/2024/10/20 19:31:22/

【树莓派 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
    

http://www.ppmy.cn/server/133422.html

相关文章

【JS】双指针法获得满足三数之和且不重复的三元组

思路 排序:首先对数组进行排序,这样可以保证在遍历过程中,相同的元素会相邻,同时也方便使用双指针法。 避免重复:在遍历过程中,如果当前元素与前一个元素相同,则跳过当前元素,以避免…

Cloudlog delete_oqrs_line 未授权SQL注入漏洞复现

0x01 产品简介 Cloudlog 是一个自托管的 PHP 应用程序,可让您在任何地方记录您的业余无线电联系人。使用PHP和MySQL构建的基于Web的业余无线电记录应用程序支持从HF到微波的一般站记录任务 0x02 漏洞概述 Cloudlog delete_oqrs_line 接口存在未授权SQL注入漏洞,未经身份验…

nacos的使用

nacos的使用 本专栏的上一篇文章已经部署好了nacos,我们就可以使用nacos做配置中心和注册中心了。 一、配置中心 有了nacos,我们在微服务项目的配置文件里只需要做一些简单的配置就行了:服务名、服务端口、nacos的地址。其余的配置都可以用…

DGCNN代码详解(一)

以下是 knn 和 get_edge_feature 函数的逐行解释: knn 函数 def knn(x, k):inner = -2 * torch.matmul(x.transpose(2, 1), x) # (B, N, N)计算点云之间的内积,用于计算成对距离。 x.transpose(2, 1) 转置张量以便矩阵乘法。 结果是一个大小为 (B, N, N) 的张量。 xx = to…

TCP/UDP通信协议

TCP通讯时序 下图是一次TCP通讯的时序图。TCP连接建立断开。包含大家熟知的三次握手和四次挥手。 在这个例子中,首先客户端主动发起连接(connet)、发送请求,然后服务器端响应请求,然后客户端主动关闭连接。两条竖线表…

特斯联|日常|Java|后端开发

2024.9.27 一面 整个沟通下来比较轻松,技术问的比较少比较浅。 自我介绍。实习做的什么项目?介绍一下?用过Vue?前端也会吗?大概有多个页面?介绍一下简历项目?你在项目中用到了Redis和MQ&#…

MySQL中什么情况下类型转换会导致索引失效

文章目录 1. 问题引入2. 准备工作3. 案例分析3.1 正常情况3.2 发生了隐式类型转换的情况 4. MySQL隐式类型转换的规则4.1 案例引入4.2 MySQL 中隐式类型转换的规则4.3 验证 MySQL 隐式类型转换的规则 5. 总结 如果对 MySQL 索引不了解,可以看一下我的另一篇博文&…

【Linux】从 fork() 到 exec():理解 Linux 进程程序替换的魔法

1.前言 进程程序替换是指一个进程用另一个新的可执行程序来替换当前正在执行的程序,这个过程通过通过exec系列函数完成。在Linux或UNIX系统中,进程程序替换通常发生在一个进程通过fork()创建了子进程之后,子进程用exec()函数加载和执行另一个…