文章目录

  • 前言
  • 一、删除不必要的文件
  • 二、strip缩小体积
  • 三、将.py文件转换为.pyc
  • 四、终极瘦身之最小python
  • 参考文档

前言

前面已经讲了如何移植python到嵌入式系统中,可参考我的另一篇博客交叉编译python3


一、删除不必要的文件

在终端中进入安装目录(/root/am335x/python/Python-3.7.9/build.am3352)

cd /root/am335x/python/Python-3.7.9/build.am3352
  • 删除include和share文件夹
  • bin和lib下面仅留下python3.7
  • /lib/python3.7下删除所有test和config相关的文件

二、strip缩小体积

将 bin下的python3.7 和lib/python3.7下的所有.so strip,基本可以减小一半的体积

  • arm-linux-gnueabihf-strip bin/python3.7
  • arm-linux-gnueabihf-strip lib/python3.7/lib-dynload/*.so
  • arm-linux-gnueabihf-strip lib*.so
    如是其他交叉编译工具,则更换arm-linux-gnueabihf

三、将.py文件转换为.pyc

将.py转换成.pyc文件
其实__pycache__里面放的是.py自动生成的.pyc文件,现在手动转换后,就可以减小一半的空间。

  • python3 -m compileall . -b
  • 删除__pycatche__和所有.py
    经过以上步骤,体积缩小到50M左右勉强可以用啦,本人到此步为止。

四、终极瘦身之最小python

lib下面有好多包,并非都是必须的,例如在没有显示屏的arm中,要tkinter作甚?

lib/python3下面保留lib-dynload(动态库)和os.pyc这两个文件
在arm系统上运行bin/python3.7,提示差什么包就把什么包复制过去
最终lib结构如下:
-rw-r–r-- 1 bert bert 29K Oct 11 02:37 _collections_abc.pyc
-rw-r–r-- 1 bert bert 3.4K Oct 11 02:37 _sitebuiltins.pyc
-rw-r–r-- 1 bert bert 6.3K Oct 11 02:37 abc.pyc
-rw-r–r-- 1 bert bert 34K Oct 11 02:37 codecs.pyc
drwxr-xr-x 3 bert bert 12K Oct 11 04:12 encodings
-rw-r–r-- 1 bert bert 3.7K Oct 11 02:37 genericpath.pyc
-rw-r–r-- 1 bert bert 3.3K Oct 11 02:37 io.pyc
drwxr-xr-x 2 bert bert 4.0K Oct 12 2019 lib-dynload
-rw-r–r-- 1 bert bert 29K Oct 11 02:37 os.pyc
-rw-r–r-- 1 bert bert 11K Oct 11 02:37 posixpath.pyc
-rw-r–r-- 1 bert bert 17K Oct 11 02:37 site.pyc
-rw-r–r-- 1 bert bert 3.8K Oct 11 02:37 stat.pyc

现在只有13M了,完全满足我的要求。
encodings文件夹下面肯定可以继续缩减,不过已经超出我的需求了,到此为止。

参考文档

https://www.cnblogs.com/real-bert/p/11662759.html
https://blog.csdn.net/yyw794/article/details/78059183

二、python3移植到嵌入式系统并瘦身(交叉编译python3并瘦身)相关推荐

  1. 一种嵌入式系统的内存分配方案

    1 嵌入式系统中对内存分配的要求 ①快速性.嵌入式系统中对实时性的保证,要求内存分配过程要尽可能地快.因此在嵌入式系统中,不可能采用通用操作系统中复杂而完善的内存分配策略,一般都采用简单.快速的内存分 ...

  2. 如何学STM32 —— 十年经验教你如何学习嵌入式系统

    一.如何学习嵌入式系统- - 嵌入式系统的概念 着重理解"嵌入"的概念 ,主要从三个方面上来理解. 1.从硬件上,"嵌入"将基于CPU的处围器件,整合到CPU芯 ...

  3. 嵌入式系统课程设计题目

    简介:一些嵌入式系统课程设计题目,可以当做对你学习ARM的一个检测. 嵌入式系统课程设计-选题要求及课题 1.嵌入式系统课程设计时长两星期,要求学生分组进行课程设计,每组学生人数为2-3人(可在不超过 ...

  4. IT 认证考试--软考--(中级项目)嵌入式系统设计师2:考试大纲【含免帐号免积分下载链接】

    一.考试说明 1.考试要求: (1)掌握科学基础知识: (2)掌握嵌入式系统的硬件.软件知识: (3)掌握嵌入式系统分析的方法: (4)掌握嵌入式系统设计与开发的方法及步骤: (5)掌握嵌入式系统实施 ...

  5. 基本概念学习(1003)---嵌入式系统

    嵌入式系统(Embedded system),是一种"完全嵌入受控器件内部,为特定应用而设计的专用计算机系统",根据英国电气工程师协会( U.K. Institution of E ...

  6. 教你如何学习嵌入式系统

    教你如何学习嵌入式系统 一.如何学习嵌入式系统- - 嵌入式系统的概念 着重理解"嵌入"的概念 ,主要从三个方面上来理解. 1.从硬件上 "嵌入"将基于CPU的 ...

  7. 嵌入式系统的概念,嵌入式系统的组成及特点,嵌入式系统的基本开发流程

    1. 嵌入式系统的概念   嵌入式系统( Embedded system) , 是一种 "完全嵌入受控器件内部,为特定应用而设计的专用计算机系统"以应用为中心,以计算机技术为基础, ...

  8. 嵌入式系统(Embedded System)综述(来自wiki)

    嵌入式系统(Embedded System),是一种嵌入机械或电气系统内部.具有专一功能和实时计算性能的计算机系统. 1.嵌入式系统(Embedded System)概述 嵌入式系统实例 研究历史 特 ...

  9. 如何学习嵌入式系统(硬件篇),含51单片机学习资料

    学习嵌入式之前我们需要了解什么是嵌入式. (官方说法)嵌入式系统是一种专用的计算机系统,作为装置或设备的一部分.国内普遍认同的嵌入式系统定义为:以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用 ...

最新文章

  1. python函数拟合不规则曲线_python 对任意数据和曲线进行拟合并求出函数表达式的三种解决方案...
  2. 环形链表找入口,真的太妙了
  3. 学界 | OpenAI 发布稀疏计算内核,更宽更深的网络,一样的计算开销
  4. 介绍一个很好用的Rsa加解密的.Net库 Kalix.ApiCrypto
  5. python从入门到精通学习笔记_Python从入门到精通之基础概念
  6. Scala集合的常用方法:sum/max/min/product
  7. python sum函数numpy_解决Numpy中sum函数求和结果维度的问题
  8. leetcode357. 计算各个位数不同的数字个数(回溯)
  9. php函数可变参数列表,PHP函数可变参数列表的具体实现方法介绍
  10. [转载] 字符串太长 pep8_Python f字符串– PEP 498 –文字字符串插值
  11. python接口自动化(四十四)- 公共模块configparser读取ini数据库、邮箱配置文件(单独说明)
  12. Oracle实现limit
  13. AliSQL-5.6.32编译安装
  14. 如何用计算机制作个人简历,制作个人简历的模板(电脑个人简历制作步骤)
  15. 里去频闪的插件叫什么_冬天去海南,你才会发现什么叫“不枉此生”!
  16. 刚体运动学公式_理论力学:运动学
  17. 渭师院的计算机专业学什么课程,【三名+建设工作】渭南初级中学教师郭晓辉走进渭师院给大学生上课...
  18. 基于WEB 的实时事件通知方案
  19. 【C操作符】详解操作符
  20. gitlab-ce 14 初始密码无法登录

热门文章

  1. JavaScript(JS) 面向对象(封装、继承、多态)
  2. Nginx入门及应用
  3. 突发!开源项目LayUI宣布下线 !
  4. java的反射用不好容易走火入魔?还可以用内省啊!
  5. php mysql prepare_PHP mysqli的prepare准备语句使用说明
  6. 华盛顿邮报:iPad 2将扩展抢先职位
  7. 基于位置的社交网络中的poi推荐
  8. 简学-CobaltStrike 的使用(一)
  9. 狂神JUC——8锁现象彻底理解锁
  10. 要毕业了,自学实现SSM开发房屋租赁系统