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

Linux开发板安装Python环境

1. 环境介绍

硬件:STM32MP157,使用的是野火出的开发板。

软件:Debian ARM 架构制作的 Linux 发行版,版本信息如下:

  • Linux发行版本:Debian GNU/Linux 10

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-638UKCvO-1683977654644)(picture/image-20230502233159734.png)]

  • 内核版本:4.19.94
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kC5e9sge-1683977654645)(picture/image-20230502233606658.png)]

2. Python 简介

对于 Python 是什么,此处简要概括如下:

  • Python 是一种跨平台的解析型编程语言

  • Python 易学、易用、功能强大,被大量应用在 AI、数据处理、编程教育中

  • 大量的开发者提供了各种 Python 代码库,其他人可以使用这些库轻松开发自己的程序

3. 安装python3环境

3.1 使用 apt 命令安装

1)先确认是否安装了python3

python3 --versionpip3 --version

输入上面两条命令,查看是否有输出python的版本信息,如果没有那么说明还没有安装python环境。

2)安装python3

安装之前,请先确认自己的板卡是否能联网。可以ping百度的网址:

ping www.baidu.com

如下图:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Xp07sxGh-1683977654645)(picture/image-20230502115743172.png)]

虽然延迟有点高,但是可以确定确实能联网。

然后运行如下命令:

# 在板卡上执行如下命令,需要联网
# 第一次使用apt需要更新
sudo apt update# 安装python3
sudo apt -y install python3# 安装pip工具
sudo apt -y install python3-pip

安装过程如下图:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KlIKoIRI-1683977654645)(picture/image-20230502120540564.png)]

3)确认是否安装完成

运行下面两条命令,查看是否能打印python的版本信息:

python3 --versionpip3 --version

如下图:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CMYZvFsH-1683977654645)(picture/image-20230502120825344.png)]

可以看到,安装的是python3.7版本。

但是我想要安装的是python3.8,或者更高的版本,而是用apt命令,默认安装的是3.7版本。然后网上找了一些参考,安装更高版本只能下载python源码,然后自行编译安装。

3.2 安装更高版本python

下面我以安装python3.10.9版本为例,记录下安装过程。

大家可以参考官网这篇文章的介绍进行安装:

https://computingforgeeks.com/how-to-install-python-on-ubuntu-linux-system/

官网介绍了也可以通过命令安装python3.10以上的版本,但是我在自己的开发板试过了,安装失败,所以下面我只介绍下载源码,进行编译安装。

1)安装构建python3.10所需依赖

sudo apt update
sudo apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev libsqlite3-dev wget libbz2-dev

安装过程中需要确认的,输入y即可。

2)下载python3.10.9源码

wget https://www.python.org/ftp/python/3.10.9/Python-3.10.9.tgz

上面是使用wget命令下载,我们也可以在电脑上到python的官网下载,然后想办法把文件传输到开发板即可。

3)解压缩python3.10.9

tar -zvxf Python-3.10.9.tgz 

4)进入解压目录,运行configure文件

cd Python-3.10.9
./configure --enable-optimizations

configure脚本可以检查所需的依赖项,–-enable optimization标志通过运行多个测试来优化二进制文件。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-t3BdEcTz-1683977654645)(picture/image-20230502131211400.png)]

发现有一些提示是 no ,这里我还不知道有什么影响,先按照步骤走吧,如果提示失败然后再一步步解决。

5)开始编译

make -j2

其中,-j2参数是你的CPU核心数,比如我的CPU是2核心的,那么我这里就使用-j2。如果是4核心的则可以使用-j4。

这里编译要超级久(我是在开发板编译的,可能开发板的CPU运行太慢了),等到最后编译完成是如下图所示:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zNN5KMX2-1683977654646)(picture/image-20230502152101781.png)]

编译过程中出现了一些找不到文件或文件夹的情况,我暂时没有去管他,就继续下一步了。

6)安装

安装其实就是把我们编译好的可执行文件,复制到系统的某个存放执行文件的目录,我们运行下面命令,会自动帮我们完成所有事情。

make altinstall

其中,make altinstall与make install的区别,altinstall skips creating the python link and the manual pages links。

即,altinstall跳过创建python链接和手册页链接的操作。

如果使用make install,在系统中将会有两个不同版本的Python在/usr/bin/目录中,这将会导致很多问题。

安装完成之后如下图所示:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TgyPKVGk-1683977654646)(picture/image-20230502152734082.png)]

7)验证是否安装完成

输入如下命令:

python3.10

然后可以看到打印信息如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-D2nN153X-1683977654646)(picture/image-20230502223617302.png)]

说明已经完成安装了。

4. 设置python软链接默认指向python3.10

4.1 更新python指向

1)删除原来python3的软链接

我原来的apt模式安装的python3.7版本,它的软链接文件在哪,可以使用which命令查找:

which python3

可以查找到是在 /usr/bin/python3 的路径。

然后使用rm命令删除这个原有软链接:

rm /usr/bin/python3

2)新建python3指向3.10版本

我们先查找python3.10在哪个目录:

which python3.10

如下图:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ec5qZYJx-1683977654646)(picture/image-20230502230358782.png)]

然后使用ln命令新建软链接:

ln -s /usr/local/bin/python3.10 /usr/bin/python3ln -s /usr/local/bin/python3.10 /usr/bin/python

我这里新建了两个软链接 python 和 python3 都指向了 3.10 版本。如果你只需要 python3 这个软链接,那么你只执行其中一条命令即可。

4.2 更新pip指向

更新pip工具指向,和上面的更新python指向是一样的。都是先找到原来的软链接指向,然后删除,然后再创建新的软链接指向即可。

这里不详细介绍,只记录需要使用的命令如下:

# 删除原有软链接
rm /usr/bin/pip3# 查找pip3.10路径
which pip3.10# 建立新的软链接
ln -s /usr/local/bin/pip3.10 /usr/bin/pip3
ln -s /usr/local/bin/pip3.10 /usr/bin/pip

更新完之后,我们查看 pip 工具版本:

pip --version

如下图:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gGdevW6v-1683977654647)(picture/image-20230502231830224.png)]

到这里就把python3.10的环境安装完成了。如果能用 apt 命令安装的话,其实也就是一条命令的事,但是我想安装的是 python3.8 以上的版本,然后这个命令安装失败,所以不得不自己下载python源码,然后自行编译安装。

相关文章:

Linux开发板安装Python环境

1. 环境介绍 硬件:STM32MP157,使用的是野火出的开发板。 软件:Debian ARM 架构制作的 Linux 发行版,版本信息如下: Linux发行版本:Debian GNU/Linux 10 内核版本:4.19.94 2. Python 简介…...

ChatGPT 聊天接口API 使用

一、准备工作 1.准备 OPENAI_ACCESS_TOKEN 2.准备好PostMan 软件 二、测试交流Demo 本次使用POSTMAN工具进行快速测试,旨在通过ChatGPT API实现有效的上下文流。在测试过程中,我们发现了三个问题:    1.如果您想要进行具有上下文的交流&…...

软件测试月薪2万,需要技术达到什么水平?

最近跟朋友在一起聚会的时候,提了一个问题,说一个软件测试工程师如何能月薪达到二万,技术水平需要达到什么程度?人回答说这只能是大企业或者互联网企业工程师才能拿到。也许是的,小公司或者非互联网企业拿二万的不太可…...

从入门到进阶,Vue框架让Web开发更简单高效

Vue是现代前端开发中最为流行的JavaScript框架之一,它具有轻量、易学、易用的特点,能够帮助开发者构建出高效、交互丰富的Web应用。在本文中,我们将会深入探索Vue框架的各个方面,包括Vue组件、Vue路由、Vue状态管理等,…...

怎么缩小照片的kb,压缩照片kb的几种方法

缩小照片的KB大小是我们日常工作生活中遇到的常见问题。虽然听起来十分专业,但其实很简单。照片的KB是指照片文件的大小,通常以“KB”为单位表示。缩小照片的KB就是减小照片文件的大小,以便占用更少的磁盘空间或更快地上传和下载照片。在实际…...

2. 注解Annotation

Java注解(Annotation)又称为Java标注,是JDK5.0引入的一种注释机制.注解是原数据的一种形式,提供有关于程序但不属于程序本身的数据.注解对他们注解的代码的操作没有直接的影响. 声明方式 注解的声明方式使用interface关键字,举例说明: public interface MyInject{ }元注解 Ta…...

【Leetcode -495.提莫攻击 -496.下一个更大的元素Ⅰ】

Leetcode Leetcode -495.提莫攻击Leetcode - 496.下一个更大的元素Ⅰ Leetcode -495.提莫攻击 题目:在《英雄联盟》的世界中,有一个叫 “提莫” 的英雄。他的攻击可以让敌方英雄艾希(编者注:寒冰射手)进入中毒状态。 …...

肝一肝设计模式【八】-- 外观模式

系列文章目录 肝一肝设计模式【一】-- 单例模式 传送门 肝一肝设计模式【二】-- 工厂模式 传送门 肝一肝设计模式【三】-- 原型模式 传送门 肝一肝设计模式【四】-- 建造者模式 传送门 肝一肝设计模式【五】-- 适配器模式 传送门 肝一肝设计模式【六】-- 装饰器模式 传送门 肝…...

Maven uber-jar(带依赖的打包插件)maven-shade-plugin

文章目录 最基础的 maven-shade-plugin 使用生成可执行的 Jar 包 和 常用的资源转换类包名重命名打包时排除依赖与其他常用打包插件比较 本文是对 maven-shade-plugin 常用配置的介绍,更详细的学习请参照 Apache Maven Shade Plugin 官方文档 通过使用 maven-shade…...

MySQL基础(二十八)索引优化与查询优化

都有哪些维度可以进行数据库调优?简言之: 索引失效、没有充分利用到索引——索引建立关联查询太多JOIN (设计缺陷或不得已的需求)——SQL优化服务器调优及各个参数设置(缓冲、线程数等)———调整my.cnf。数据过多――分库分表 关于数据库调优的知识点非常分散。不同的DBMS&…...

初步认识性能测试和完成一次完整的性能测试

上一篇博文主要通过两个例子让测试新手了解一下测试思想,和在做测试之前应该了解人几点,那么我们在如何完成一次完整的性能测试呢? 测试报告是一次完整性能测试的体现,所以,这里我给出一个完整的性能测试报告&#xff…...

使用插件快速生成代码

使用插件快速生成代码 咋们常说,授人以鱼不如授人以渔,在这里给大家提供一些技巧性的东西,方便一些新手同学可以快速上手,同时,也提高我们的开发兴趣与开发热情! 主要讲什么呢,我们来学一学如何…...

FE_Vue学习笔记 插槽 slot

插槽分为匿名插槽、具名插槽、作用域插槽。子组件中: 匿名插槽只能有一个;可以有多个具名插槽;作用域插槽中可以有匿名插槽和具名插槽。 当项目中一个组件可以多次复用时,我们可以把这个组件封装成单独的.vue文件,从…...

单链表的成环问题

前言:链表成环问题不仅考察双指针的用法,该问题还需要一定的数学推理和分析能力,看似简单的题目实则细思缜密,值得斟酌~ 目录 1.问题背景引入-判断链表是否成环: 1.1.正解:快慢指针 1.2 STL的集合判重 …...

横截面收益率

横截面收益率指的是在经典资产定价模型中,在横截面上线性确定的一个与资产风险匹配的资产收益率。 横截面收益率的预测[1] (一)变量和方法 我们主要使用月度频率数据进行检验。交易数据和公司财务数据来自于CSMAR数据库。CSMAR数据库的收益率调整了送股、配股以及拆…...

C++解析JSON JSONCPP库的使用

首先去GitHub下载JSONCPP的源码: JSonCpp的源码 解压后得到:jsoncpp-master 文件夹 需要的是:jsoncpp-master\src\lib_json 目录下的所有文件和 jsoncpp-master\include\json 目录下的所有文件,在MFC工程目录下新建两个文件夹或…...

不会Elasticsearch标准查询语句,如何分析数仓数据?

1 Elasticsearch的查询语句 ES中提供了一种强大的检索数据方式,这种检索方式称之为Query DSL,Query DSL是利用Rest API传递JSON格式的请求体(Request Body)数据与ES进行交互,这种方式的丰富查询语法让ES检索变得更强大,更简洁。 1.1 查询预发 # GET /…...

获得GitHub Copilot并结合VS Code使用

一、什么是GitHub Copilot GitHub Copilot是一种基于AI的代码生成工具。它使用OpenAI的GPT(生成式预训练Transformer)技术来提供建议。它可以根据您正在编写的代码上下文建议代码片段甚至整个函数。 要使用GitHub Copilot,您需要在编辑器中…...

Java基础-判断和循环

1 流程控制语句 在一个程序执行的过程中,各条语句的执行顺序对程序的结果是有直接影响的。所以,我们必须清楚每条语句的执行流程。而且,很多时候要通过控制语句的执行顺序来实现我们想要的功能。 1.1 流程控制语句分类 ​ 顺序结构 ​ 判…...

ESP32 FreeRTOS学习总结

2023.5.11 FreeRTOS中文数据手册:https://www.freertos.org/zh-cn-cmn-s/RTOS.html 感谢以下两位B站UP主的教程:孤独的二进制、Michael_ee 1.Task 创建任务常用API: 任务函数描述xTaskCreate()使用动态的方法创建一个任务xTaskCreatePinne…...

设计模式和设计原则回顾

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

【机器视觉】单目测距——运动结构恢复

ps:图是随便找的,为了凑个封面 前言 在前面对光流法进行进一步改进,希望将2D光流推广至3D场景流时,发现2D转3D过程中存在尺度歧义问题,需要补全摄像头拍摄图像中缺失的深度信息,否则解空间不收敛&#xf…...

django filter 统计数量 按属性去重

在Django中,如果你想要根据某个属性对查询集进行去重并统计数量,你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求: 方法1:使用annotate()和Count 假设你有一个模型Item,并且你想…...

关于 WASM:1. WASM 基础原理

一、WASM 简介 1.1 WebAssembly 是什么? WebAssembly(WASM) 是一种能在现代浏览器中高效运行的二进制指令格式,它不是传统的编程语言,而是一种 低级字节码格式,可由高级语言(如 C、C、Rust&am…...

【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分

一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计,提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合:各模块职责清晰,便于独立开发…...

【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统

目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索(基于物理空间 广播范围)2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...

以光量子为例,详解量子获取方式

光量子技术获取量子比特可在室温下进行。该方式有望通过与名为硅光子学(silicon photonics)的光波导(optical waveguide)芯片制造技术和光纤等光通信技术相结合来实现量子计算机。量子力学中,光既是波又是粒子。光子本…...

高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数

高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数 在软件开发中,单例模式(Singleton Pattern)是一种常见的设计模式,确保一个类仅有一个实例,并提供一个全局访问点。在多线程环境下,实现单例模式时需要注意线程安全问题,以防止多个线程同时创建实例,导致…...

回溯算法学习

一、电话号码的字母组合 import java.util.ArrayList; import java.util.List;import javax.management.loading.PrivateClassLoader;public class letterCombinations {private static final String[] KEYPAD {"", //0"", //1"abc", //2"…...

GitHub 趋势日报 (2025年06月06日)

📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 590 cognee 551 onlook 399 project-based-learning 348 build-your-own-x 320 ne…...