【问题标题】:Where to use a pyc file在哪里使用 pyc 文件
【发布时间】:2011-02-23 00:50:06
【问题描述】:

我想知道 pyc 文件(python 字节码)是什么。我想知道所有的细节。 我想知道 pyc 文件如何与编译器交互。它是exe的替代品吗? 它需要由python运行吗? 它和 .py 文件一样可移植吗? 我应该在哪里使用它?

【问题讨论】:

    标签: python


    【解决方案1】:

    为了补充 Mike Graham 的回答,有一些有趣的 cmets here 提供了一些有关 pyc 文件的信息。最有趣的是我怀疑你是这条线:

    从“.pyc”或“.pyo”文件中读取程序不会比从“.py”文件中读取程序运行得更快; “.pyc”或“.pyo”文件唯一更快的是它们的加载速度。

    这件事一针见血。 pyc 文件的关键。 pyc 是预解释的 py 文件。 python 字节码仍然与从py 文件生成的相同 - 不同之处在于,当使用pyc 文件时,您不必经历创建pyc 输出的过程(您在运行py 文件时执行)。阅读,因为您不必将 python 脚本转换为 python 字节码。

    如果您在java 中遇到过.class 文件,这是一个类似的概念——不同之处在于在java 中您必须在java 解释器执行应用程序之前使用javac 进行编译。不同的做事方式(内部结构会非常不同,因为它们是不同的语言),但思路大致相同。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        来自docs:

        作为使用大量标准模块的短程序启动时间的重要加速,如果在找到 spam.py 的目录中存在名为 spam.pyc 的文件,则假定该文件包含已经“字节编译”的模块垃圾邮件版本。用于创建 spam.pyc 的 spam.py 版本的修改时间记录在 spam.pyc 中,如果不匹配则忽略 .pyc 文件。

        有关更多信息,请参阅参考文献。但是一些具体的答案:

        spam.pyc 文件的内容与平台无关,因此不同架构的机器可以共享一个 Python 模块目录。

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

        一般来说,您不会手动制作 .pyc 文件:解释器会自动制作它们。

        【讨论】:

          猜你喜欢
          • 2011-07-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-01-06
          • 2019-04-10
          • 2022-01-16
          • 2011-09-11
          相关资源
          最近更新 更多