树莓派Python环境配置:删除Python 2、默认使用Python 3及配置Python镜像源指南

树莓派Python环境配置:优化升级三部曲

文章目录

  • 树莓派Python环境配置:优化升级三部曲
    • 前言
    • 一、查看系统预装的python版本
    • 二、卸载python2并默认python3
    • 三、删除默认python3.7并升级到python3.9
    • 四、更换树莓派上的pip系统镜像源
      • 一键更换清华源(五星推荐)
    • 总结


前言

随着技术的不断进步,Python 2 已经在 2020 年 1 月 1 日后正式停止维护,这意味着它不再接收安全更新和错误修复。因此,对于任何新的或正在进行的项目,使用 Python 2 已经不再是一个明智的选择。然而,在某些情况下,尤其是在一些预装的系统中,如树莓派,Python 2 可能仍然作为默认版本存在。

树莓派作为一款流行的开源硬件平台,为嵌入式系统开发和物联网应用提供了强大的支持。然而,对于希望在树莓派上进行Python开发的用户来说,默认使用Python 2 可能会带来一些不便和潜在的安全风险。因此,将默认Python版本更改为Python 3,并配置高效的Python镜像源,成为了树莓派Python环境配置的重要任务。

在本文中,我们将指导你如何删除树莓派上的Python 2,确保默认使用Python 3,并配置Python镜像源,以加速Python包的下载速度。通过完成这些步骤,你将能够充分利用Python 3的强大功能和安全性,为你在树莓派上的项目开发提供最佳的环境支持。无论是初学者还是经验丰富的开发者,都可以从本文中获得实用的指导,帮助你轻松配置出一个高效、安全的树莓派Python开发环境。

一、查看系统预装的python版本

打开终端,并输入命令:

python --version
python3 --version

命令执行后,终端会输出系统默认Python的版本号。如果系统默认使用Python 3,那么输出的将是Python 3的版本号;如果系统默认使用Python 2,输出的则是Python 2的版本号。
在这里插入图片描述
可以看到,我的这个预装的默认是python2.7.16和python3.7.3,并且默认使用的是python2版本的,很明显不符合开发的需求。(主要是麻烦)

二、卸载python2并默认python3

  1. 使用以下命令卸载
sudo apt-get remove --purge python2
  1. 自动清理 python2.7 的依赖
sudo apt autoremove
  1. 输入python验证是否卸载成功
python

在这里插入图片描述
如上说明卸载成功!

  1. 删除python2.7软连接
sudo rm -f /usr/bin/python

如果提示 “rm: 无法删除’/usr/bin/python’: 没有那个文件或目录” ,跳过即可

  1. 更改软链接,默认使用python3
sudo ln -s /usr/bin/python3.7 /usr/bin/python
  1. 检查当前 python 版本
python -V

在这里插入图片描述

在删除Python 2并确保Python 3作为默认版本后,如果你的系统预装的Python 3版本满足你的开发需求,那么没有必要继续后面的教程升级到Python 更高的版本。Python 3.7已经是一个稳定且功能丰富的版本,适用于大多数应用场景。只需要通过配置Python镜像源来加速Python包的下载速度。

然而,如果你希望确保你的Python环境是最新的,或者某些特定的库或工具需要Python 3.9或更高版本,那么你可以考虑升级Python。

三、删除默认python3.7并升级到python3.9

  1. 更新系统
sudo apt-get update  && sudo apt-get upgrade
  1. 卸载python3.7
sudo apt-get remove python
  1. 清理依赖关系并验证卸载
sudo apt-get autoremove
python --version

在这里插入图片描述

如果命令返回错误消息,表示找不到python3.7命令,那么说明Python 3.7已成功卸载。

  1. 安装依赖
    在安装Python之前,需要安装一些依赖包。这些依赖包通常包括构建工具和一些基本的库。
sudo apt install -y build-essential zlib1g-dev \
libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libsqlite3-dev \
libreadline-dev libffi-dev curl libbz2-dev sqlite3 bzip2 libbz2-dev
  1. 下载指定版本的python源码
    访问Python官方网站(http://www.python.org),找到“Downloads”部分,选择“Source code”并下载你需要的Python版本的源代码压缩包。例如,如果你需要Python 3.9.13,就下载对应的压缩包。
wget https://www.python.org/ftp/python/3.9.13/Python-3.9.13.tgz
  1. 解压源代码
    将下载的压缩包解压到你选择的目录。
tar xvf Python-3.9.13.tgz
  1. 编译并安装
    进入解压后的源代码目录,并使用以下命令配置、编译和安装Python:
cd Python-3.9.13  # 切换到目录#安装配置
./configure --enable-optimizations \
--prefix=/usr/bin/local/python3.9 \
--with-ensurepip=upgrade \
--enable-sharedmake -j4 # 调用四核来编译,这一步很漫长,取决于你对树莓派性能
sudo make install # 安装

这个过程可能需要一些时间,取决于你的树莓派的性能。./configure脚本会检查你的系统并准备构建,make命令会编译源代码,而sudo make install会以root权限安装Python到系统目录。
扩展内容: 在编译和安装Python时,./configure 脚本支持许多不同的命令参数,这些参数允许你定制Python的构建和安装过程。以下是一些常用的命令参数:

基本选项:
--prefix=DIR:指定Python的安装目录。
--exec-prefix=DIR:如果安装目录与平台相关,则可以使用此选项。通常与 --prefix 一起使用。
编译选项:
--enable-optimizations:启用昂贵的、稳定的优化(例如PGO)。
--with-lto:尝试使用链接时优化(LTO)。
--disable-shared:不编译共享Python库。与 --enable-shared 相反。
--enable-shared:编译共享Python库。
功能选项:
--with-ensurepip=upgrade:确保pip是最新的,即使已经安装了旧版本。
--without-ensurepip:不安装pip。
--with-doc-strings:在Python中包括文档字符串。
--without-doc-strings:不包括文档字符串(可以节省空间)。
库和依赖项:
--with-openssl=DIR:指定OpenSSL的安装目录。
--with-system-expat:使用系统提供的expat库。
--with-system-ffi:使用系统提供的libffi库。
--with-dbmliborder=LIST:指定dbm库的搜索顺序。
调试和测试:
--with-pydebug:构建带有调试信息的Python。
--without-gcc:不使用GCC(需要其他C编译器)。
--with-valgrind:启用Valgrind支持(内存调试)。
其他选项:
--with-threads:启用线程支持(通常是默认启用的)。
--without-threads:禁用线程支持。
--with-computed-gotos:启用计算goto(某些平台/编译器上可能更快)。
--without-computed-gotos:禁用计算goto。
  1. 验证安装
    安装完成后,验证Python是否成功安装并使用了指定的版本。在终端中运行以下命令:
python3 --version

如果输出的版本号与你安装的版本一致,说明安装成功。

  1. 建立软连接
ls /usr/bin/python -l  # 查看当前软链接指向的python版本
sudo rm -f /usr/bin/python # 删除原来的软链接
which python3 # 查找python安装位置

在这里插入图片描述

sudo ln -s /usr/local/bin/python3.9 /usr/bin/python # 建立新链接
sudo ln -s /usr/local/bin/python3.9 /usr/bin/python3 # 这个也很重要

在这里插入图片描述

四、更换树莓派上的pip系统镜像源

一键更换清华源(五星推荐)

直接打开终端执行以下命令即可:

pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple # 清华源

可选:

pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/ #阿里源pip config set global.index-url http://mirrors.cloud.tencent.com/pypi/simple #腾讯源pip config set global.index-url http://pypi.douban.com/simple/ #豆瓣源

此外更换树莓派上的pip系统源可以通过修改配置文件来实现。以下是具体的步骤:

1. 修改全局pip配置文件:(推荐)
打开终端,输入命令 sudo nano /etc/pip.conf
在打开的文件中,将原有内容注释掉(在行首添加#)。
添加新的内容,例如使用阿里云的pip源:extra-index-url=https://mirrors.aliyun.com/pypi/simple
ctrl + o 保存,然后按 Enter 确认,最后按 ctrl + x 退出。

2. 创建用户级别的pip配置文件(可选):
/home/pi/ 下创建目录 .pip,命令为 mkdir ~/.pip
进入该目录,命令为 cd ~/.pip
创建 pip.conf 文件,命令为 touch pip.conf
编辑该文件,命令为 sudo nano pip.conf
输入以下内容(以使用清华大学的pip源为例):[global] index-url=https://pypi.tuna.tsinghua.edu.cn/simple
同样按 ctrl + o 保存,然后按 Enter 确认,最后按 ctrl + x 退出。

更快的配置文件方式:

sudo nano ~/.pip/pip.conf
# 在打开的文件中,添加以下内容以设置清华大学的pip源:
[global] 
timeout = 6000 
index-url = https://pypi.tuna.tsinghua.edu.cn/simple 
trusted-host = pypi.tuna.tsinghua.edu.cn]
# 在nano编辑器中,你可以按Ctrl + O保存文件,然后按Enter确认文件名,最后按Ctrl + X退出编辑器。

完成上述步骤后,pip将会使用新的系统源来安装和更新Python包。请确保你选择的源是可靠和稳定的,以避免在包安装或更新过程中遇到问题。

此外,如果你只是想临时更换pip源而不是永久更换,你可以在每次使用pip安装或更新包时,通过命令行参数来指定源,例如:pip install package_name -i https://pypi.tuna.tsinghua.edu.cn/simple。这样,pip就会临时使用指定的源来安装或更新包。

3.换回默认源

运行以下代码即可换回默认的源。

pip config unset global.index-url

总结

通过以上步骤,你可以轻松地在树莓派上配置Python环境,删除原有的Python 2,使Python 3成为默认版本,并将Python 3.9升级到更新的版本。同时,配置合适的镜像源可以加速软件包的下载速度,提高开发效率。希望本文对你有所帮助!

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

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

相关文章

LoadRunner学习:RuntimeSetting、参数化、关联、(unfinished

LoadRunner RuntimeSetting 运行时设置 在Vuser中设置Run-time Settings RunLogic:运行逻辑,决定了脚本真正执行逻辑, Init和End部分代码只能执行一次。决定脚本真正执行逻辑的意思是,在Run中的代码和Number of Iteration决定了…

灵魂指针,教给(三)

欢迎来到白刘的领域 Miracle_86.-CSDN博客 系列专栏 C语言知识 先赞后看,已成习惯 创作不易,多多支持! 目录 一、 字符指针变量 二、数组指针变量 2.1 数组指针变量是什么 2.2 数组指针变量如何初始化 三、二维数组传参本质 四、函数…

Redis + Caffeine = 王炸!!

在高性能的服务架构设计中,缓存是一个不可或缺的环节。在实际的项目中,我们通常会将一些热点数据存储到Redis或MemCache这类缓存中间件中,只有当缓存的访问没有命中时再查询数据库。在提升访问速度的同时,也能降低数据库的压力。 随着不断的发展,这一架构也产生了改进,在…

Selenium控制已运行的Edge和Chrome浏览器(详细启动步骤和bug记录)

文章目录 前期准备1. 浏览器开启远程控制指令(1)Edge(2)Chrome 2. 执行python代码(1)先启动浏览器后执行代码(2)通过代码启动浏览器 3. 爬取效果3. 完整代码共享3.1 包含Excel部分的…

【数据结构】初识二叉搜索树(Binary Search Tree)

文章目录 1. 二叉搜索树的概念2. 二叉搜索树的操作1.1 二叉搜索树的查找1.2 二叉搜索树的插入1.3 二叉搜索树的删除 1. 二叉搜索树的概念 二叉搜索树又称二叉排序树,它可能是一棵空树,也可能是具有以下性质的二叉树: 若它的左子树不为空&am…

力扣L5----- 58. 最后一个单词的长度(2024年3月11日)

1.题目 2.知识点 注1: lastIndexOf()它用于查找指定字符或子字符串在当前字符串中最后一次出现的位置。它的作用是从字符串的末尾向前搜索指定字符或子字符串,并返回其最后一次出现的位置的索引。 (1)例如,在字符串 …

Rust入门:C++和Rust动态库(dll)的相互调用

无论是C调用Rust动态库还是Rust调用C动态库,其操作基本都是一样地简单,基本和C调用C的动态库没什么区别,只需要列出所需要导入的函数,并链接到相应的lib文件即可。 这里,在windows中,我们以dll动态库为例说…

OpenCV学习笔记(一)——Anaconda下载和OpenCV的下载

OpenCV是图象识别中有巨大的应用场景,本篇文章以Python为基础。当初学OpenCV的时候,推使用在Anaconda编写代码,原因比较方便,下面我们对于Anaconda的下载过程进行演示。 Anaconda的下载 首先打开官网www.anaconda.com/download找…

数据结构---C语言栈队列

知识点: 栈: 只允许在一端进行插入或删除操作的线性表,先进后出LIFO 类似一摞书,按顺序拿,先放的书只能最后拿; 顺序栈:栈的顺序存储 typedef struct{Elemtype data[50];int top; }SqStack; SqS…

设计模式-行为型模式-模版方法模式

模板方法模式,定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。[DP] 模板方法模式是通过把不变行为搬移到超类,去除子类中的重复代码来体现它的优势。 //首…

【Leetcode每日一题】 位运算 - 面试题 01.01. 判定字符是否唯一(难度⭐)(33)

1.题目解析 题目链接:面试题 01.01. 判定字符是否唯一 这个问题的理解其实相当简单,只需看一下示例,基本就能明白其含义了。 核心在于判断题目所给字符串是否存在相同字母,存在返回false即可,不存在返回true即可。 …

Caffeine缓存

本地缓存基于本地环境的内存,访问速度非常快,对于一些变更频率低、实时性要求低的数据,可以放在本地缓存中,提升访问速度 使用本地缓存能够减少和Redis类的远程缓存间的数据交互,减少网络 I/O 开销,降低这…

08 聚合函数

聚合函数 我们上一章讲到了 SQL 单行函数。实际上 SQL 函数还有一类,叫做聚合(或聚集、分组)函数,它是对一组数据进行汇总的函数,输入的是一组数据的集合,输出的是单个值。 1.聚合函数介绍 什么是聚合函…

for、while、do...while循环的使用

本篇文章只记录for、while、do...while循环的使用&#xff0c;由于java循环较为简单&#xff0c;所以直接上代码。 1、for循环 需求&#xff1a;循环遍历求和 1-100。 public class Demo {public static void main(String[] args) {int sum 0;for (int i 1; i < 100; i…

YOLOv5目标检测学习(4):YOLOV5源码的文件结构解析

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言①py、cpp、java后缀的文件②md、txt、yml后缀的文件③yaml后缀的文件 一、.github文件夹1.1 workflows文件夹&#xff1a;该文件夹通常包含GitHub Actions 的工…

RHEL9 DNF/YUM仓库管理软件包

DNF/YUM仓库管理软件包 一个基于RPM包的软件包管理器能够从指定的服务器自动下载RPM包并且安装&#xff0c;自动处理依赖性关系&#xff0c;并且一次性安装所有依赖的软件包C/S模式 Server服务端提供RPM软件包与数据库文件repodataClient客户端使用dnf仓库 常用组合 组合参…

解决Klipper下位机ID获取失败问题

使用硬件&#xff1a; 上位机&#xff1a;必趣派&#xff0c;版本CB1_Debian11_Klipper_kernel5.16_20230303 下位机&#xff1a;八爪鱼STM32F407 问题&#xff1a;上位机获取下位机ID失败。 解决&#xff1a;咨询DIY群友&#xff0c;也对这个问题不太了解。我调试过程中&…

Python 导入Excel三维坐标数据 生成三维曲面地形图(面) 4-1、线条平滑曲面(原始图形)

环境和包: 环境 python:python-3.12.0-amd64包: matplotlib 3.8.2 pandas 2.1.4 openpyxl 3.1.2 scipy 1.12.0 代码: import pandas as pd import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D from scipy.interpolate import griddata fro…

【vivado】 clock wizard 时钟IP

一、前言 MMCM和PLL是在FPGA设计中不可避免需要使用到的时钟资源&#xff0c;对于其功能及使用方法的理解是正确进行FPGA设计的前提。 二、Xilinx 时钟 IP配置 vivado中使用时钟向导(Clocking Wizard)配置时钟IP核&#xff0c;其框图如下&#xff1a; clk_in 输入时钟&#…

基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的的商品标签识别系统(Python+PySide6界面+训练代码)

摘要&#xff1a;开发商品标签识别系统在提升零售业运营效率和顾客购物体验中发挥着关键作用。本篇博客详细阐述了如何应用深度学习技术构建此类系统&#xff0c;并提供了完整的代码实现。该系统基于高效的YOLOv8算法&#xff0c;并与YOLOv7、YOLOv6、YOLOv5进行了性能对比&…