如何最小化嵌入式系统的Python 3.6运行时?

时间:2017-02-14 13:38:24

标签: linux python-3.x embedded runtime

我们制作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  .

2 个答案:

答案 0 :(得分:0)

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

根据他们的描述,MicroPython旨在尽可能与普通Python兼容,以便您轻松地将代码从桌面传输到微控制器或嵌入式系统。然而它非常紧凑,只需要256k的代码空间和16k的RAM就可以运行。

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

答案 1 :(得分:0)

我们删除了以下内容:

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

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

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