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

目录

  • 分发包、包管理和部署应用程序 - 以 microdot 为例
    • 概述
    • 安装 mip
    • 手动安装包 - 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") # 安装比较复杂的包,包含了一些相依库的描述

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

安装 mip

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

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

下图可以看到在本机的终端上进行安装 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

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


图 3. 使用本地手动安装

参考代码

from microdot import Microdot
app = Microdot()

参考资料

  • 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/

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

  1. 神经网络与深度学习——TensorFlow2.0实战(笔记)(二)(包管理和环境管理)

    包管理和环境管理(以下操作也可在anaconda界面,进行可视化操作) 包管理:包的安装.卸载.更新和查找等等 conda命令 conda install <包名称列表> 同时安装多个包 ...

  2. (云服务器学习)部署python程序到云服务器

    (云服务器学习)部署python程序到云服务器 我本来好早就买了阿里云的服务器,以前叫做学生机,现在好像叫云翼计划,我感觉每年花个不到百元能玩玩也挺不错的.还能在上面搭建个人博客,跑跑程序,以后还能学 ...

  3. 一种混合包管理和容器管理方案,及在tinycorelinux上安装containerd和openfaas

    本文关键字:在tinycorelinux上装docker,virtual appliance vs virtual appstack,no cgroup mount found in mountinf ...

  4. 傻瓜bat脚本实现包管理和包引用——如何优雅的管理bat脚本集(一)

    傻瓜bat脚本实现包管理和包引用--如何优雅的管理bat脚本集(一) 因为管理公司AD林需要,比如远程数据库的热备,冷备等,本来是使用付费工具实现的,但是系统重装以后丢失了注册码,又不愿意重新付费,所 ...

  5. weblogic服务器部署的程序,如何直接通过IP访问(即URL中去掉工程名)

    用weblogic部署的程序,怎么能够直接通过IP访问呢? 下面就是了 打开你的工程,看看webroot下的WEB-INF中有没有一个weblogic.xml文件. 1.如果没有,自己建一个,里面写上 ...

  6. /* * 编程题第五题(20分): 本题要求你写个程序把给定的符号打印成沙漏的形状。例如给定17个“*”,要求按下列格式打印 ***** *** * *** ***** 所谓“

    题目: 编程题第五题(20分): 本题要求你写个程序把给定的符号打印成沙漏的形状.例如给定17个"*",要求按下列格式打印 *****************    所谓" ...

  7. python分发包_Python 分发包中添加额外文件的方法

    在制作一个 Python 分发包时经常需要把一些文件添加到包中.最常见的例子是你希望通过 pip install命令安装 Python 包时会在 /etc/ 等目录下自动添加默认配置文件,由此可以让 ...

  8. 爬虫实战:CentOS安装JDK,部署Java程序,利用screen使其保持在前台运行

    一.CentOS 7 yum 安装与配置 JDK 参考:https://blog.csdn.net/github_38336924/article/details/82221258 1.检查是否已安装 ...

  9. Linux部署web程序

    1.   创建ucenter用户 一般情况下,发布应用程序都不是使用root用户的,需要创建一个普通用户来发布程序: 创建ucenter用户: useradd -d /ucenter ucenter ...

最新文章

  1. linux wc read,Linux 下使用 wc 统计文件夹下所有文件的代码行数(包括子目录)-Go语言中文社区...
  2. 网络安全中的恶意软件
  3. Q7:难道不想手工搞个环境?
  4. php四舍六入五成双算法
  5. 视频直播网站源码,uniapp页面跳转的几种方法和区别
  6. Android中EditText中文英文长度控制
  7. 【题解】「JSOI2012」玄武密码(AC自动机)
  8. 计算机丢失quartz.dll什么意思,全民K歌运行时提示quartz.dll文件丢失,如何修复
  9. 定时任务 Corn表达式
  10. linux杀毒软件clamav,linux杀毒软件-clamav
  11. 机器学习的数学基础 矩阵论与概率论
  12. Office 2016系列下载地址
  13. SQL脚本通过汉字转换为拼音全拼
  14. 毕业设计----多功能电子词典的设计与实现效果展示
  15. GTX/GTH QPLL CPLL学习之Aurora
  16. windows系统日志查看
  17. 读书笔记:微信小程序布局之行内元素和块级元素
  18. css选择器 :nth-of-type(1)、:nth-child(1)、:first-child、 :first-of-type
  19. 判断点是否位于多边形内(包含凹多边形)
  20. linux嵌入式系统算法,嵌入式Linux操作系统调度算法研究

热门文章

  1. 【信号】单端信号和差分信号,他们到底是什么东西。
  2. 12.基础实验(1)按键检测
  3. 谷歌云实例如何使用 SSH 密钥登录
  4. 计算机网络对等网规划设计实验报告,对等网的组建实验报告.doc
  5. 对等连接 计算机网络,对等网络是什么?
  6. vsco怎么两个滤镜叠加_别再乱套滤镜了!这4款VSCO滤镜好看到哭!
  7. 在厕所里求助手机的象棋特级大师
  8. IT人员的核心竞争力是什么?
  9. 影像去除黑边或白边的三种方法
  10. python画图matplotlib绘制3D图