我知道“. pyc”文件是纯文本“. py”文件的编译版本,在运行时创建,以使程序运行得更快。然而,我观察到一些事情:
rm*. pyc
)时,有时程序行为会改变。这将表明它们没有在更新“. py”s时编译。问题:
.每当导入相应的代码元素时生成pyc文件,如果相应的代码文件已更新,则会更新pyc文件。如果是的话。pyc文件被删除后,它们将自动重新生成。但是,当删除相应的代码文件时,它们不会自动删除。
这可能会在文件级重构过程中导致一些非常有趣的错误。
首先,您可以推送只在您的计算机上工作而不在其他计算机上工作的代码。如果您对删除的文件有悬空引用,如果您不手动删除相关文件,这些文件仍将在本地工作。pyc文件,因为。pyc文件可用于导入。这与一个正确配置的版本控制系统只会推动的事实更加复杂。将文件复制到中心存储库,而不是。pyc文件,这意味着您的代码可以通过“导入测试”(一切导入都正常),并且不会在任何其他计算机上工作。
其次,如果将包转换为模块,可能会出现一些非常可怕的错误。当您将包(包含\uuu init\uuuuuuuuuupy
文件的文件夹)转换为模块(一个.py文件)时。曾经表示该包的pyc文件仍然存在。特别是,\uuuuu init\uuu。pyc保持不变。因此,如果您的包foo中包含一些无关紧要的代码,那么稍后将删除该包并创建一个文件foo。使用一些函数py
def bar():传递
并运行:
from foo import bar
你得到:
ImportError: cannot import name bar
因为python仍然在使用旧的。来自foo包的pyc文件,其中没有一个定义bar。这在web服务器上可能特别有问题,因为在web服务器上,完全正常工作的代码可能会因错误而中断。pyc文件。
由于这两个原因(可能还有其他原因),您的部署代码和测试代码应该删除。pyc文件,例如具有以下bash行的文件:
find . -name '*.pyc' -delete
另外,从Python2.6开始,您可以使用
-B
标志运行python,使其不使用。pyc文件。看看如何避免。pyc文件?更多细节。
另请参见:如何删除所有。项目中的pyc文件?
。pyc
文件只有在其他脚本导入python文件时才会创建(可能会被覆盖)。如果调用了导入,Python将检查。pyc
文件的内部时间戳不早于相应的。py
文件。如果是,则加载。pyc
;如果不是,或者如果。pyc还不存在,Python编译
。将
文件复制到
中。pyc
并加载它。
你说的“更严格的检查”是什么意思?
问题内容: 我知道“ .pyc”文件是纯文本“ .py”文件的编译版本,是在运行时创建的,以使程序运行更快。但是我观察到了一些事情: 修改“ py”文件后,程序行为会更改。这表明“ py”文件已编译或至少经过某种哈希处理或比较时间戳,以便确定是否应重新编译它们。 删除所有“ .pyc”文件()后,有时程序行为也会改变。这表明它们不是在更新“ .py”时被编译的。 问题: 他们如何决定何时编译? 有
问题内容: 什么时候需要刷新文件? 我从不这样做,因为我调用File.Close,并且我认为它会自动刷新,不是吗? 问题答案: 您会注意到os.File没有.Flush(),因为它不需要一个,因为它没有缓冲。写入是直接syscall写入文件。 当您的程序退出时(即使崩溃),操作系统将自动关闭所有打开的文件,并且文件系统会在您处理完磁盘后将您的更改写入磁盘(有时会在程序退出后几分钟) 。 调用os.
问题内容: 已经了解Python是一种解释性语言…但是,当我查看Python源代码时,我看到的是Windows标识为“编译的Python文件”的文件。这些从哪里来? 问题答案: 它们包含字节码,这是Python解释器将源代码编译到的字节码。然后,此代码由Python的虚拟机执行。 Python的文档解释了这样的定义: Python是一种解释型语言,与编译型语言相反,尽管由于字节码编译器的存在,两者
本文向大家介绍.py和.pyc文件有什么区别?,包括了.py和.pyc文件有什么区别?的使用技巧和注意事项,需要的朋友参考一下 Python编译.py文件并将其另存为.pyc文件 .pyc包含Python源文件的编译字节码,不会为您执行的主程序文件创建.pyc(仅对于导入的模块)。 .pyc文件包含编码的python字节码。 如果要导入模块,则模块将计算两个数的加法 示例 输出结果 如果您以“ e
.py 文件是程序的源代码。 .pyc 文件是程序的编译字节。 Python 编译 .py 文件并将其保存为 .pyc 文件。 然后由Python虚拟机执行。 在执行主要源代码之前,python会查找它的编译版本(.pyc 文件),如果 python 找到,那么它将在虚拟机的帮助下执行它。 如果没有,那么它将寻找一个 .py 文件编译它然后执行 .py 文件。 基本上,.pyc 文
本文向大家介绍请你来说一下什么时候会发生段错误?相关面试题,主要包含被问及请你来说一下什么时候会发生段错误?时的应答技巧和注意事项,需要的朋友参考一下 段错误通常发生在访问非法内存地址的时候,具体来说分为以下几种情况: 使用野指针 试图修改字符串常量的内容