我花了最近的3个小时试图找出是否可以禁用或在不使用交互模式的情况下构建Python,或者如何使Linux上的python可执行文件更小。
你可以猜到它是为嵌入式设备而设计的,在交叉编译后,Python大约有1MB大小,对我来说太多了。
现在的问题:
有没有可能缩小Python可执行文件?也许是禁用交互模式(在命令行上启动Python程序)。
我查找了配置选项并尝试了其中一些,但对我的可执行文件没有产生任何变化。
我使用gcc的优化选项进行编译,已经进行了剥离。
我花了最近的3个小时试图找出是否可以禁用或在不使用交互模式的情况下构建Python,或者如何使Linux上的python可执行文件更小。
你可以猜到它是为嵌入式设备而设计的,在交叉编译后,Python大约有1MB大小,对我来说太多了。
现在的问题:
有没有可能缩小Python可执行文件?也许是禁用交互模式(在命令行上启动Python程序)。
我查找了配置选项并尝试了其中一些,但对我的可执行文件没有产生任何变化。
我使用gcc的优化选项进行编译,已经进行了剥离。
http://code.google.com/p/python-on-a-chip/
如网站所述:
Python-on-a-Chip(p14p)是一个项目,旨在开发一种缩小版的Python虚拟机(代号为PyMite),该虚拟机可以在没有操作系统的微控制器上运行Python语言的大部分子集。 p14p的其他部分是设备驱动程序,高级库和其他工具。请加入python-on-a-chip谷歌组以讨论此项目。
这可能比预期的低级一些,但它确实被缩小了:
PyMite VM的特点:
您可以从此项目中获得有趣的想法。
请注意,您只能获得虚拟机,即可以运行pyc文件而不是py文件。(pyc文件跨平台,且比py文件小得多)
事实上,如果你真正针对最小的Python进行目标设置,你需要禁用部分库,甚至可能是编译器本身。也许你可以通过配置来压缩一些内容,但是效果不会很明显。
实际的交互模式代码也非常简单,所以我怀疑你在这方面也不会节省太多空间。
我相信有更多实质性的功能你没有使用,可以从解释器中削减它们以减小文件大小。例如,你可能可以放弃大量的解析器和编译器,并只处理字节码。问题在于,唯一的方法是修改解释器源代码。(而且它并不是世界上最美丽的代码,所以你需要花费很多时间学习如何操作。)你还需要知道哪些功能可以削减。
另一个真正的选择就是编写一个类似Python的语言的小型解释器——例如,通过使用tinypy项目。但是根据你的评论,除非非常接近,“类似Python”的语言似乎不够好。
嗯,我想还有一个选择:修改一个不同的、更好的Python实现,而不是CPython。问题在于Jython和IronPython都不是本地代码(虽然也许你可以使用JVM->本地编译器,或者将足够的Jython压缩到J2ME JVM中?),而PyPy在嵌入式系统上真的还没有准备好。(你能等几年吗?)因此,你可能只能使用CPython。