我想对我在嵌入式设备上使用的python库进行字节编译。
基本上,我想将所有*.py
文件预处理为__pycache__/*.pyc
文件,以避免第一次使用此应用程序时发生这种情况,并降低速度。
我试图了解这个预字节码翻译步骤是否依赖于它运行的地方(我的笔记本电脑与另一台设备)。如果我在Ubuntu盒子(基于x86)上用compileall字节编译我的python应用程序,然后把那些放在__pycache__
目录中的字节码转换文件放到嵌入式linux盒子(基于ARM)中,它们能工作吗?字节编译平台特定吗?
我不太关心.pyc
文件是否与不同版本的python兼容,而是与不同的底层架构兼容。我的机器和设备都使用python3.4。
如果我在Ubuntu盒子(基于x86)上字节编译我的python应用程序[…],然后将这些字节码翻译的文件[…]带到嵌入式linux盒子(基于ARM)中,它们能工作吗?
假设解释器版本使用兼容的字节码形式(只有当主要或次要版本号不同时才会更改),是的,它们会起作用。
引用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文件将在它们之间工作。