字节编译是否特定于Python平台?

时间:2015-10-29 22:41:03

标签: python bytecode

我想对我在嵌入式设备上使用的python库进行字节编译。

基本上,我希望将所有*.py个文件预处理为__pycache__/*.pyc个文件,以避免在第一次使用此应用时发生这种情况并减慢所有内容。

我试图理解这个前字节码转换步骤是否依赖于它运行的地方(我的笔记本电脑与另一个设备)。   如果我在Ubuntu框(基于x86)上用compileall对我的python应用程序进行字节编译,然后将那些放在__pycache__目录中的字节码翻译文件带到嵌入式linux盒子(ARM-基于),他们会工作吗?字节编译平台是否具体?

我不太关心.pyc文件是否与不同版本的python兼容,以及不同的底层架构。我的机器和设备都使用python3.4。

1 个答案:

答案 0 :(得分:2)

  

如果我在Ubuntu盒子(基于x86)上对我的python应用程序进行字节编译,然后将这些字节码翻译的文件[...]带到嵌入式linux盒子(基于ARM),将会他们有效吗?

假设解释器版本使用兼容的字节码形式(仅在主要或次要版本号不同时更改),是的,它们将起作用。

引自an excellent answer to a related question by John La Rooy

# python:  file(1) magic for python
0   string      """ a python script text executable
0   belong      0x994e0d0a  python 1.5/1.6 byte-compiled
0   belong      0x87c60d0a  python 2.0 byte-compiled
0   belong      0x2aeb0d0a  python 2.1 byte-compiled
0   belong      0x2ded0d0a  python 2.2 byte-compiled
0   belong      0x3bf20d0a  python 2.3 byte-compiled
0   belong      0x6df20d0a  python 2.4 byte-compiled
0   belong      0xb3f20d0a  python 2.5 byte-compiled
0   belong      0xd1f20d0a  python 2.6 byte-compiled

...如果您的平台使用足够兼容的版本来共享相同的魔法,那么.pyc文件将在它们之间起作用。