File tree Expand file tree Collapse file tree 1 file changed +19
-0
lines changed
Expand file tree Collapse file tree 1 file changed +19
-0
lines changed Original file line number Diff line number Diff line change 1+ # MicroPython .mpy 文件详解
2+
3+ MicroPython 定义了 ` .mpy ` 文件的概念,该文件是一种二进制容器文件格式,在其中包含了预编译的 Python 代码,这种类型的文件可以像普通的 ` .py ` 模块一样被导入到 MicroPython 程序中。举个例子来说明这种类型文件的使用方法。例如,只要 ` foo.mpy ` 存在于指定的路径中,我们就可以通过 ` import foo ` 语句来导入 ` foo.mpy ` 文件。
4+
5+ 这种类型文件的导入规则是这样的,首先按顺序搜索 ` sys.path ` 中列出的每个目录。当搜索特定目录时,首先查找 ` foo.py ` ,如果找不到该目录,则查找 ` foo.mpy ` ,如果没有找到,则在下一个目录中继续搜索。通过这种方式,` foo.py ` 文件的优先级将高于将高于 ` foo.mpy ` 文件。
6+
7+ 这些 ` .mpy ` 文件中的主要内容是字节码,这些字节码是通过 ` mpy-cross ` 程序从 Python 源文件(` .py ` 文件)生成的。对于一些芯片架构,` .mpy ` 文件还可以包含原生机器码,这些机器码可以通过多种方式产生,他们大部分是由 C 语言代码生成的。
8+
9+ ## .mpy 文件的版本号和兼容性
10+
11+ ## 在 .mpy 文件中使用原生机器码
12+
13+ 本小节将介绍如何构建和使用包含来自非 Python 语言的本机代码的 ` .mpy ` 文件。
14+ 这使您可以使用 C 之类的语言编写代码,进行编译并将其链接到 ` .mpy ` 文件,然后像普通的 Python 模块一样导入此文件。这可用于实现对性能至关重要的功能,或用于包含以另一种语言编写的现有库。
15+
16+ 使用原生 ` .mpy ` 文件最主要的优点之一是该文件可以被动态导入到 MicroPython 中,而无需重新编译固件。你无需像在 [ MicroPython 中添加外部 C 模块] ( external_c_modules.md ) 时那样,重新编译你的固件。
17+
18+ 这里的重点是使用 C 来构建原生模块,但是从理论上来说,任何语言编译成的独立机器码都可以放入 ` .mpy ` 文件中。
19+
You can’t perform that action at this time.
0 commit comments