Python*.py,*.pyo,*.pyc:对于嵌入式系统,哪些可以消除?

2024-04-23 07:33:56 发布

您现在位置:Python中文网/ 问答频道 /正文

为了挤占我目前正在使用的嵌入式系统中有限的文件系统存储空间,我希望消除任何可以合理删除的文件,而不会对功能或性能造成重大影响。Python库中的*.py、*.pyo和*.pyc文件占了相当大的空间,我想知道对于在小型嵌入式系统中安装Python 2.6,以下哪种选项最合理:

  1. 保留*.py,消除*.pyc和*.pyo(保持调试能力,性能受到影响?)
  2. 保留*.py和*.pyc,消除*.pyo(优化真的能买到什么吗?)
  3. 保留*.pyc,删除*.pyo和*.py(这有效吗?)
  4. 保留*.py、*.pyc和*.pyo(都需要?)

Tags: 文件py功能系统选项空间能力性能
3条回答

http://www.network-theory.co.uk/docs/pytut/CompiledPythonfiles.html

When the Python interpreter is invoked with the -O flag, optimized code is generated and stored in ‘.pyo’ files. The optimizer currently doesn't help much; it only removes assert statements.

Passing two -O flags to the Python interpreter (-OO) will cause the bytecode compiler to perform optimizations that could in some rare cases result in malfunctioning programs. Currently only doc strings are removed from the bytecode, resulting in more compact ‘.pyo’ files.

我给你的建议?

如果不需要assert语句和文档字符串,则使用-OO只编译.pyo文件。

否则,请仅使用.pyc

编辑

我注意到你只提到了Python库。如果只需要部分功能,那么可以删除大部分python库。

我还建议您看看tinypy,它是大约64kb的Python的大子集。

我建议只保留.py文件。启动时间上的差异并不是很大,拥有源代码是一个优势,因为它将在不同的python版本下运行,不会有任何问题。

从Python2.6开始,将sys.dont_write_字节码设置为True将完全禁止编译.pyc和.pyo文件,因此如果有2.6可用,则可能需要使用该选项。

3号应该也会起作用。使用编译后的python代码不需要.pyo或.py文件。

相关问题 更多 >