Micropython的包管理

MicroPython包支持多种管理和安装方式,本文主要mipmpremote以及手动安装包的方式,另外也会说明下如何发布自己的包。

使用**mip**安装包

mip(“mip installs packages”)是一个跟Python pip概念类似的工具,但它不使用PyPI索引,而是默认使用micropython-lib作为索引,支持网络的板子通常包含mip模块,可以从micropython-lib或第三方站点(如:GitHub)安装包。

通常可以在REPL中使用mip

>>> import mip
>>> mip.install("pkgname")  # 安装最新版本的"pkgname"包及其依赖
>>> mip.install("pkgname", version="x.y")  #安装版本为x.y的"pkgname"包
>>> mip.install("pkgname", mpy=False)  #安装源代码版本(如.py而不是.mpy文件)

mip通过搜索sys.path中第一个以/lib结尾的条目来检测文件系统中适当的位置,可以使用target来覆盖目标位置,但要注意,该路径必须在sys.path 中,以便随后导入:

>>> mip.install("pkgname", target="third-party")
>>> sys.path.append("third-party")

除了使用micropython-lib索引下载软件包,mip还可以安装第三方库。最简单的方法是直接下载文件:

>>> mip.install("http://example.com/x/y/foo.py")
>>> mip.install("http://example.com/x/y/foo.mpy")

直接安装文件时,仍支持使用target参数设置目标路径,但会忽略mpy和版本。

URL也可以以github:开头,作为指向GitHub上托管内容的一种简单方式:

>>> mip.install("github:org/repo/path/foo.py")  # 使用缺省分支
>>> mip.install("github:org/repo/path/foo.py", version="branch-or-tag")  # 可选特定的分支或Tag

更复杂的软件包(即包含多个文件或有依赖关系)可通过指定 package.json 的路径下载。

>>> mip.install("http://example.com/x/package.json")
>>> mip.install("github:org/user/path/package.json")

如果没有指定json文件,则会隐式添加"package.json":

>>> mip.install("http://example.com/x/")
>>> mip.install("github:org/repo")  # 使用 repo 的缺省分支
>>> mip.install("github:org/repo", version="branch-or-tag")

在Unix上使用**mpi**

在Unix环境,也可在REPL中使用mip,如上文所述,也可使用 -m:

$ ./micropython -m mip install pkgname-or-url
$ ./micropython -m mip install pkgname-or-url@version

可以设置--target=path--no-mpy--index 参数:

$ ./micropython -m mip install --target=third-party pkgname
$ ./micropython -m mip install --no-mpy pkgname
$ ./micropython -m mip install --index https://host/pi pkgname

使用**mpremot**安装包

mpremote工具也具有与mip相同的功能,可用于从PC主机将软件包安装到本地连接的设备上(如通过 USB 或 UART):

$ mpremote mip install pkgname
$ mpremote mip install pkgname@x.y
$ mpremote mip install http://example.com/x/y/foo.py
$ mpremote mip install github:org/repo
$ mpremote mip install github:org/repo@branch-or-tag

可以设置--target=path、``--no-mpy--index 参数:

$ mpremote mip install --target=/flash/third-party pkgname
$ mpremote mip install --no-mpy pkgname
$ mpremote mip install --index https://host/pi pkgname

手动安装包

也可以通过手动将文件复制到设备来安装软件包(.py或.mpy 格式)。根据电路板的不同,可以通过大容量USB存储器、mpremote工具(例如 mpremote fs cp path/to/package.py :package.py)、webrepl 等方式实现。

编写和发布包

让MicroPython用户广泛的访问你的软件包最简单的方法是发布到 microropython-lib,用户可通过mipmpremote自动获取并编译成字节码。更多信息请参见https://github.com/micropython/micropython-lib。

要编写可由 mipmpremote 下载的 "自托管 "软件包,需要一个静态网络服务器(或 GitHub)来托管单个.py文件或与.py文件一起托管的package.json文件。

下面是mlx90640库的package.json文件:

{"urls": [["mlx90640/__init__.py", "github:org/micropython-mlx90640/mlx90640/__init__.py"],["mlx90640/utils.py", "github:org/micropython-mlx90640/mlx90640/utils.py"]],"deps": [["collections-defaultdict", "latest"],["os-path", "latest"],["github:org/micropython-additions", "main"]],"version": "0.2"
}

它包括两个文件,托管在名为 org/micropython-mlx90640 的GitHub仓库中,安装到设备上的mlx90640目录中。依赖collections-defaultdictos-path,这两个文件会从micropython-lib自动安装。第三个依赖关系会安装GitHub仓库org/micropython-additions主分支package.json文件中定义的内容。

冻结包

当从设备文件系统导入一个Python模块或软件包时,它会被编译成RAM中的字节码,以便由虚拟机执行。对于.mpy文件,这一转换已经完成,但字节码最终仍在RAM 中。

对于低内存设备或大型应用,从ROM运行字节码可能更有优势。具体做法是将字节码 "冻结 "到MicroPython固件中,然后再刷到设备上。它们运行时的性能是一样的(虽然导入速度更快),但它可以释放大量内存供程序使用。

这种方法的缺点是开发速度要慢得多,因为每次都要刷固件,但对于冻结不常变化的依赖关系还是很有用的。

冻结是通过编写清单文件并在构建过程中使用(通常作为定制电路板定义的一部分)来实现的。更多信息请参阅 MicroPython manifest files 指南。

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

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

相关文章

【数据结构】循环队列(数组实现)

目录 一、循环队列定义 怎么使一个数组在逻辑上呈“环状”呢? 二、循环队列与顺序队列的差异 1、存储方式: 2、操作方式: 3、空间利用率: 4、循环队列判断队空的方式: 5、循环队列判断队满的方式 完整测试代码及注释: 总…

axure RP9.0安装字体图标库fontawesome

字体图库地址: Font AwesomeThe internets icon library toolkit. Used by millions of designers, devs, & content creators. Open-source. Always free. Always awesome.https://fontawesome.com/v6/download进入后下载想要的版本如我是6.3 下载后得到压缩包,解压之后…

机器学习笔记 - 从2D数据合成3D数据

一、3D 数据简介 人们一致认为,从单一角度合成 3D 数据是人类视觉的一项基本功能,这对计算机视觉算法来说极具挑战性。但随着 LiDAR、RGB-D 相机(RealSense、Kinect)和 3D 扫描仪等 3D 传感器的可用性和价格的提高,3D 采集技术的最新进展取得了巨大飞跃。 与广泛使用的 2D…

数据库中的MVCC--多版本并发控制

一、前言 1、定义:MVCC(Multi-Version Concurrency Control),多版本并发控制,主要为了提高数据库 的并发性能。是MySQL的InnoDB存储引擎实现隔离级别的一种具体方式。用于实现提交读和可重 复读这两种隔离级别。 2…

【重点】【单调栈】【循环数组】503.下一个更大元素 II

题目 法1&#xff1a;单调栈循环数组 class Solution {public int[] nextGreaterElements(int[] nums) {int n nums.length;int[] res new int[n];Stack<Integer> stack new Stack<>();for (int i 2 * n - 1; i > 0; --i) { // 循环数组处理!!!while (!st…

Mybatis-Plus乐观锁配置使用流程【OptimisticLockerInnerInterceptor】

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家:人工智能学习网站 1.乐观锁实现 1.配置插件 1.XML方式 <bean class"com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerI…

C# .Net 开发设计多用户网上商城源码_OctShop

随着C#在TIOBE编程语言排行不断上升&#xff0c;这也标志着越来越多的程序员开始使用C#来开发项目了。在TIOBE2023年10月公布的排行中&#xff0c;C#和Java之间的差距越来越小了&#xff0c;仅为1.2%&#xff0c;随着C# .NetCore的免费开源&#xff0c;这一上升的趋势越来越明显…

MySQL视图特性

目录 视图概念基本使用创建视图修改视图会影响基表修改基表会影响视图删除视图 视图规则和限制 视图概念 视图是一个虚拟表&#xff0c;其内容由查询定义。同真实的表一样&#xff0c;视图包含一系列带有名称的列和行数据。视图的数据变化会影响到基表&#xff0c;基表的数据变…

[设计模式 Go实现] 行为型~中介者模式

中介者模式 中介者模式封装对象之间互交&#xff0c;使依赖变的简单&#xff0c;并且使复杂互交简单化&#xff0c;封装在中介者中。 例子中的中介者使用单例模式生成中介者。 中介者的change使用switch判断类型。 mediator.go package mediatorimport ("fmt"&q…

Python 编写代码的工具-交互式环境

交互式环境意思就是我们输入一行代码&#xff0c;按回车&#xff0c;代码就会立马执行并产生结果和显示在窗口中。 要打开Python交互式环境&#xff0c;具体操作如下&#xff08;win系统&#xff09;&#xff1a; 键盘WINR&#xff0c;再输入指令“cmd”,就可以打开命令提示符…

win下持续观察nvidia-smi

简介&#xff1a;在Windows操作系统中&#xff0c;没有与Linux中watch命令直接对应的内置工具&#xff0c;但有1种方法快速简单的方法可以实现类似的效果&#xff0c;尤其是用于监控类似于nvidia-smi的命令输出。 历史攻略&#xff1a; Python&#xff1a;查看windows下GPU的…

Dubbo服务提供端处理请求的过程剖析

1 处理请求的过程概述 &#xff08;1&#xff09;消费端发起TCP连接后&#xff0c;服务提供方的NettyServer的connected方法将被调用&#xff1b; &#xff08;2&#xff09;因为Netty默认的线程模型为All&#xff0c;因此AllChannelHandler类把接收到的所有消息&#xff08;…

PaddlePaddle初使用

模型导出与预测 # -c 后面设置训练算法的yml配置文件 # -o 配置可选参数 # Global.pretrained_model 参数设置待转换的训练模型地址&#xff0c;不用添加文件后缀 .pdmodel&#xff0c;.pdopt或.pdparams。 # Global.save_inference_dir参数设置转换的模型将保存的地址。pytho…

数据库攻防学习之MySQL

MySQL 0x01mysql学习 MySQL 是瑞典的MySQL AB公司开发的一个可用于各种流行操作系统平台的关系数据库系统&#xff0c;它具有客户机/服务器体系结构的分布式数据库管理系统。可以免费使用使用&#xff0c;用的人数很多。 0x02环境搭建 这里演示用&#xff0c;phpstudy搭建的…

华为端口隔离高级用法经典案例

最终效果&#xff1a; pc4不能ping通pc5&#xff0c;pc5能ping通pc4 pc1不能和pc2、pc3通&#xff0c;但pc2和pc3能互通 vlan batch 2 interface Vlanif1 ip address 10.0.0.254 255.255.255.0 interface Vlanif2 ip address 192.168.2.1 255.255.255.0 interface MEth0/0/1 i…

基于SSM的校园快递管理系统

目录 前言 开发环境以及工具 项目功能介绍 学生&#xff1a; 管理员&#xff1a; 详细设计 获取源码 前言 本项目是一个基于IDEA和Java语言开发的基于SSM的校园快递管理系统应用。应用包含学生端和管理员端等多个功能模块。 欢迎使用我们的校园快递管理系统&#xff01;我…

厦门大学OpenHarmony技术俱乐部开创“1+N”新模式,加速推动产学研融合

12月29日,OpenHarmony技术俱乐部再添重将——在多方见证下,厦门大学OpenHarmony技术俱乐部在翔安校区益海嘉里楼报告厅正式揭牌成立,现场出席领导及师生代表近千人。 成立仪式现场 OpenHarmony技术俱乐部 携手厦门大学共绘开源生态新图景 OpenHarmony是由开放原子开源基金…

揭示AUTOSAR中隐藏的漏洞

AUTOSAR是一个普遍采用的软件框架&#xff0c;用于各种汽车零部件&#xff0c;如ABS, ECU,自动照明、环境控制、充电控制器、信息娱乐系统等。AUTOSAR的创建目的是促进汽车零部件之间形成标准接口&#xff0c;可以在不同制造商之间互通。 因此&#xff0c;任何配备微控制器(MC…

CGAL的无限制的Delaunay图

本章描述了构建L∞距离下线段Delaunay图的算法和几何特征。这些特征还包括绘制L∞距离下线段Delaunay图对偶&#xff08;即L∞距离下线段Voronoi图&#xff09;边缘的方法。L∞算法和特征依赖于欧几里得&#xff08;或L2&#xff09;距离下的线段Delaunay图算法和特征。L∞度量…

redis 面试问题 (更新中 ing)

reids 是做什么的 为什么那么快 有哪些使用场景 1.数据缓存 2.计数器 3.限时 4.限流 5.分布式锁 6.队列 7.发布 订阅 redis有哪些 数据结构 常用的 string 对字符串 、整数、浮点数list 链表 &#xff0c;字符串set 不重复集合 &#xff0c;交集、并集 差集hash 无序散列…