2010-05-23 50 views
10

我想知道pyc文件(python字节码)是什么。我想知道所有的细节。 我想知道pyc文件如何与编译器接口。它是EXE的替代品吗? 是否需要由python运行? 它是否与.py文件一样便携? 我应该在哪里使用这个?何处使用pyc文件

回答

15

为了补充Mike Graham的回答,有一些有趣的评论here给出了pyc文件的一些信息。最有趣的是,我怀疑你是这样一行:

从'.pyc'或'.pyo'文件中读取的程序运行速度比从'.py '文件;关于'.pyc'或'.pyo'文件的唯一更快的速度是它们被加载的速度。

哪一个打在头上w.r.t. pyc文件的症结所在。 A pyc是预解释的py文件。 python字节码仍然与从py文件生成的相同 - 不同之处在于,当使用pyc文件时,您不必经历创建pyc输出的过程(在运行py文件时)。请阅读,因为您不必将python脚本转换为python字节码。

如果您遇到过java中的.class文件,这是一个类似的概念 - 不同之处在于java必须在java解释器执行应用程序之前使用javac编译。不同的做事方式(内部会因为不同的语言而非常不同),但同样的广泛思想。

9

Python字节码需要Python才能运行,不能在没有Python的情况下独立运行,并且特定于Python的特定版本x.y。它应该可以跨平台移植到同一版本。你没有一个共同的理由来使用它; Python使用它来优化解析重复导入时的.py文件。你的生活会很好,忽略pyc文件的存在。

6

docs

由于对于使用了大量的标准模块,如果在目录中的垃圾邮件中还有一个叫spam.pyc的文件,短节目的启动时间的重要加速.py被发现,这被假定为包含模块垃圾邮件的已经“字节编译”版本。用于创建spam.pyc的spam.py版本的修改时间记录在spam.pyc中,如果它们不匹配,则.pyc文件将被忽略。

请参阅参考资料以了解更多信息。但一些具体答案:

spam.pyc文件的内容与平台无关,因此Python模块目录可以由不同体系结构的计算机共享。

这是不是可执行文件;它被编译器内部用作中间步骤。

通常,您不需要手工制作.pyc文件:解释器会自动生成.pyc文件。