我花了最后3个小时试图找出是否可以在没有交互模式的情况下禁用或构建Python,或者我如何才能获得更小的python可执行文件的大小。
正如你可以猜到的那样,对于嵌入式设备而言,在交叉编译之后,Python大约只有1MB,这对我来说太过分了。
现在问题:
是否有可能缩小Python可执行文件?也许要禁用交互模式(在命令行上启动Python程序)。
我查找了配置选项并尝试了其中一些,但它不会对我的可执行文件产生任何更改。
我使用gcc中的优化选项编译它,它已被剥离。
答案 0 :(得分:5)
如果你真的想缩小python,你可以看看那些项目:
http://code.google.com/p/python-on-a-chip/
如网站上所述:
Python-on-a-Chip(p14p)是一个开发减少的项目 运行重要的Python虚拟机(代号为PyMite) 没有操作系统的微控制器上Python语言的子集。该 p14p的其他部分是设备驱动程序,高级库和 其他工具。请加入python-on-a-chip google小组进行讨论 这个项目。
这可能比预期的要低一些,但确实会缩小:
PyMite VM的功能:
你可以从这个项目中获得有趣的想法。
请注意,您只能获得虚拟机,即。你可以运行pyc文件,而不是py。 (pyc文件是跨平台的。而且比py文件小得多)
事实上,如果你真的针对最小的python,你需要禁用库的一部分,但也可能是编译器本身。
此网站也可能有一些有趣的指示:http://www.awaretek.com/pymo.html
答案 1 :(得分:3)
可能有一些方法可以通过配置,而不是更多来简化它。
此外,实际的交互模式代码非常简单,所以我怀疑你会在那里节省很多。
我确信你没有使用更多实质性的功能,你可以通过解释器来减小尺寸。例如,您可能会抛出一大块解析器和编译器,只处理字节码。问题是,唯一的方法是破解翻译源。 (而且它不是世界上最美丽的代码,所以你将不得不花费大量的时间来学习你的方法。)而且你必须知道你实际上可以破解的功能。
另一个真正的替代方案是为类似Python的语言编写一个较小的解释器 - 例如,通过拾取tinypy项目。但是根据你的评论,除非它非常接近,否则“听起来像Python”似乎不够。
好吧,我想还有一个选择:破解与CPython不同的,更好的Python实现。问题是Jython和IronPython不是本机代码(虽然你可以使用JVM->本机编译器,或者可能将Jython塞进J2ME JVM中?),PyPy真的还没准备好进入黄金时段嵌入式系统。 (你能等几年吗?)所以,你可能会被CPython困住。
答案 2 :(得分:0)
我在2018年底偶然发现了这个问题。目前,最流行的微型python(以及专门为受限平台和嵌入式设备设计的微型python)是MicroPython,在微控制器等领域非常流行