【问题标题】:How to minimize the Python 3.6 runtime for an embedded system?如何最小化嵌入式系统的 Python 3.6 运行时?
【发布时间】:2017-02-14 13:38:23
【问题描述】:

我们制作 ARM 9 嵌入式系统、Linux 等。最近有客户要求我们为他们预装 Python 3。我们进行了交叉编译(QEMU 真的很神奇),但生成的构建是 177Mb,所以这是不行的。这里最好的计划是什么——我们可以离开 Doc 目录,也许还有“build”目录?我看到 Lib 目录是 54Mb - 这是选择客户需要什么库的情况吗?我们对 Python 知之甚少。需要明确的是,我看到很多关于打包 Python 应用程序的建议——这不是我们正在做的事情——我们正在打包 Python 运行时。谢谢! (目录大小汇总如下)

1.6M  ./Python-3.6.0/Mac
760K  ./Python-3.6.0/Include
17M   ./Python-3.6.0/build
5.4M  ./Python-3.6.0/Python
8.0K  ./Python-3.6.0/.github
54M   ./Python-3.6.0/Lib
2.7M  ./Python-3.6.0/PC
2.7M  ./Python-3.6.0/Tools
6.9M  ./Python-3.6.0/Objects
11M   ./Python-3.6.0/Doc
824K  ./Python-3.6.0/Parser
20M   ./Python-3.6.0/Modules
15M   ./Python-3.6.0/Programs
620K  ./Python-3.6.0/PCbuild
12K   ./Python-3.6.0/Grammar
5.8M  ./Python-3.6.0/Misc
161M  ./Python-3.6.0
177M  .

【问题讨论】:

  • 查看 Alex Martelli 对此问题的回答:stackoverflow.com/questions/2344712/…
  • 谢谢 - 我见过这样的答案 - 但是使运行时特定于特定的 python 应用程序,对吗?这不是我想要的 - 我想知道一般分发 Python 的最“常见”方式,而不是针对某个特定应用程序。

标签: linux python-3.x embedded runtime


【解决方案1】:

满足您的要求的可能选择是 MicroPython,它是 PYthon 3 的实现,它由 Python 标准库的一小部分组成。根据他们的网站,它针对微控制器和受限环境: https://micropython.org/

根据他们的描述,MicroPython 的目标是尽可能与普通 Python 兼容,让您可以轻松地将代码从桌面传输到微控制器或嵌入式系统。然而,它足够紧凑,可以在 256k 的代码空间和 16k 的 RAM 中安装和运行。

有一个在线项目将 MicroPyton 的实现放在基于 Arm Cortex M4 的嵌入式系统中也可能会有所帮助: https://github.com/micropython/micropython/wiki

【讨论】:

    【解决方案2】:

    我们删除了以下内容:

    1. python3-测试
    2. libpython3.8-staticdev
    3. python3-*src
    4. python3-*dbg
    5. python3-*dev
    6. 所有.pyc文件(安装后可以重新编译)

    我们选择不继续进行以下操作:

    1. 删除“不需要的”模块:可能会破坏第 3 方库的依赖关系
    2. UPX 二进制打包程序:压缩后的安装介质大小相同,因此只会减慢启动速度
    3. python 源文件缩小:产生损坏的代码,正如我们在使用 python3 -m compileall . 重新生成 .pyc 时发现的那样

    【讨论】:

      猜你喜欢
      • 2010-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多