当前位置:   article > 正文

uPython - 分发包、包管理和部署应用程序 - 以 microdot 为例

upython

分发包、包管理和部署应用程序 - 以 microdot 为例

正如“大”Python 一样,MicroPython 支持创建“第三方”包,分发它们,并在每个用户的环境中轻松安装它们。本章讨论如何实现这些操作。建议对 Python 打包有一定的了解。

概述

以下步骤表示创建和使用包时的高级工作流程:

  • Python 模块和包被转换为分发包档案,并在 Python 包索引 (PyPI) 上发布。
  • upip 包管理器可用于在具有网络功能的 MicroPython 设备上安装、分发包(例如,在 Unix 设备上)。v1.19 后已改为 mip。
  • 对于没有联网能力的端口,可以在Unix设备上准备一个“安装映像”,并通过合适的方式传输到设备上。
  • 对于低内存端口,可以将安装映像冻结为 MicroPython 可执行文件的字节码,从而最大限度地减少内存存储开销。

mip (mip installs packages) 的概念与 Python 的 pip 工具相似,但是它不使用 pypi 索引,默认情况下,是使用 micropython-lib 作为其索引。 从micropython-lib 下载时,mip 将自动获取 .mpy 文件。该模块可以从 micropython-lib 和第三方站点(包括GitHub)安装包装。

在 REPL 环境下使用 mip 安装的语法,但先决条件是 ESP32-CAM 必须要先连上网。

import mip
mip.install("pkgname")  # 直接指定包名称,会从 https://micropython.org/pi/v2 找寻并安装
mip.install("pkgname", version="x.y")  # 指定包名称与版次
mip.install("pkgname", mpy=False)  # 安装原码文件 (会是 .py 而不是 .mpy 档)
mip.install("http://example.com/x/y/foo.py") #  安装第三方包
mip.install("github:org/repo/path/foo.py", target="third-party") # 从 GitHub 直接安装
mip.install("github:org/user/path/package.json") # 安装比较复杂的包,包含了一些相依库的描述
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

mip 预设会把包安装在(/lib) 中。如果有指定 target 选项,则会安装在该目录,但记得在 sys.path 变量中,加入该目录 (sys.path.append("third-party")),不然 import 会找不到该包的所在位置。

安装 mip

因为原先固件预设没有安装mip,所以要透过远程方式 (mpremote) 安装 mip,命令如下。

mpremote connect /dev/cu.usbserial-14110 mip install mip
  • 1

下图可以看到在本机的终端上进行安装 mip,会连到 https://micropython.org/pi/v2 网站进行搜寻并下载安装,会安装在 ESP32-CAM 的 /lib 路径,安装时会一并安装相依套件 urequests,安装完毕后再进入 REPL 环境,就可以正常使用 mip。

在这里插入图片描述
图 1. 使用 mpremote 安装 mip

再次强调,在 REPL 环境下一定要先连结网络,才能进行安装,不然会出现错误,画面如下。

在这里插入图片描述
图 2. 在 REPL 使用 mip 安装

所以,使用 mpremote 安装是比较常用的方法。

手动安装包 - microdot

以下展示安装 microdot 这个第三方软件的包,microdot (https://github.com/miguelgrinberg/microdot) ,(百度云盘,提取码ccit)是一个由 Flask 启发的简约 Python Web 框架,是支援 Python 和 MicroPython 的小型网络框架,旨在有限资源(例如微控制器)的系统上运行。目前可以在 PyPi 直接安装,但是在 MicroPython 只能手动安装,安装方法十分简单,可以选择从 github 或是本地上传,命令如下。

# 从 github 安装
mpremote connect /dev/cu.usbserial-14110 mip install https://raw.githubusercontent.com/miguelgrinberg/microdot/main/src/microdot.py
# 或是事先下载原码,直接上传到 ESP32-CAM 就可以
mpremote connect /dev/cu.usbserial-14110 cp microdot.py :/lib/
mpremote connect /dev/cu.usbserial-14110 ls /lib
  • 1
  • 2
  • 3
  • 4
  • 5

下图显示手动本地文件上传来进行安装,安装完后使用 ls 命令来检视是否上传成功,接著再连接上 ESP32-CAM 直接运行代码,确认包装无误。

在这里插入图片描述
图 3. 使用本地手动安装

参考代码

from microdot import Microdot
app = Microdot()
  • 1
  • 2

参考资料

  • mPython help documentation, https://mpython.readthedocs.io/en/master/index.html
  • MicroPython 文档, http://micropython.86x.net/en/latet/index-2.html
  • MicroPython documentation, https://docs.micropython.org/en/latest/index.html
  • 关于MicroPython mpremote工具 的一些用例, https://www.cnblogs.com/Wind-stormger/p/16659124.html
  • microdot, https://github.com/miguelgrinberg/microdot
  • Secrets of MicroPython: ESP32 Web Server using Microdot, https://bhave.sh/micropython-microdot/
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/153895?site
推荐阅读
相关标签
  

闽ICP备14008679号