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

Linux 如何最小化嵌入式系统的Python 3.6运行时?,linux,python-3.x,embedded,runtime,Linux,Python 3.x,Embedded,Runtime,我们生产ARM9嵌入式系统、Linux等。最近一位客户要求我们为他们预安装Python 3。我们设计了交叉编译(QEMU真的很神奇),但是最终的构建是177Mb,所以这是不可能的。这里最好的计划是什么?我们可以省去Doc目录,也许还有“build”目录?我看到Lib目录是54Mb——这是一个选择客户需要什么Lib的案例吗?我们对Python知之甚少。要明确的是,我看到了很多关于打包Python应用程序的建议——这不是我们正在做的——我们正在打包Python运行时。谢谢(目录大小摘要如下) 满足您

我们生产ARM9嵌入式系统、Linux等。最近一位客户要求我们为他们预安装Python 3。我们设计了交叉编译(QEMU真的很神奇),但是最终的构建是177Mb,所以这是不可能的。这里最好的计划是什么?我们可以省去Doc目录,也许还有“build”目录?我看到Lib目录是54Mb——这是一个选择客户需要什么Lib的案例吗?我们对Python知之甚少。要明确的是,我看到了很多关于打包Python应用程序的建议——这不是我们正在做的——我们正在打包Python运行时。谢谢(目录大小摘要如下)


满足您的需求的一个可能的选择可能是MicroPython,它是Python3的一个实现,Python3由PYthon标准库的一小部分组成。根据他们的网站,它的目标是微控制器和受限环境:

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

有一个在线项目将MicroPyton的一个实现置于基于Arm Cortex M4的embeeded系统中,这也可能证明是有帮助的:
我们删除了以下内容:

  • 蟒蛇3试验
  • libpython3.8-staticdev
  • 蟒蛇3-*src
  • 蟒蛇3-*dbg
  • python3-*dev
  • 所有
    .pyc
    文件(安装后可以重新编译)
  • 我们选择不继续进行以下工作:

  • 删除“不需要的”模块:可能会破坏第三方库的依赖关系
  • UPX二进制打包器:压缩的安装介质大小相同,因此这只会减慢启动速度
  • python源文件缩小:产生了不完整的代码,我们在使用
    python3-m编译器重新生成
    .pyc
    时发现了这一点。

  • 请参阅Alex Martelli对这个问题的回答:谢谢-我见过这样的答案-但是让运行时特定于特定的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  .