除了在源文件夹中没有一堆这些文件的方便之外,避免.pyc
文件是否有任何好处、性能或其他方面?
3 回答
我不认为真的有。.pyc
文件是缓存的字节码文件,您可以节省启动时间,因为 Python 不必在每次启动解释器时重新编译您的 python 文件。
最多,关闭字节码编译可以让您测量解释器在这一步上花费了多少时间。如果要比较节省了多少时间,请删除.pyc
项目中的所有文件,并使用 -B 切换到解释器来为 Python 计时:
$ time python -B yourproject
然后在没有 -B 开关的情况下再次运行:
$ time python yourproject
可能是您要运行程序的用户没有对源代码目录的写入权限;例如,您不希望远程用户有任何机会通过漏洞更改您的源代码的 Web 服务器。在这种情况下,我会使用包含的compileall
模块来使用特权用户对所有内容进行字节编译,而不是放弃编写.pyc
文件。
我能想到的一个原因:在开发过程中,如果您删除或重命名.py
文件,该.pyc
文件将保留在您的本地副本中,并使用旧名称和旧字节码。由于您通常不会将.pyc
文件提交给版本控制,因此这可能会导致ImportError
在您的机器上不会发生的流浪 s,但会在其他机器上发生。
.pyc 文件可能会鼓励人们认为他们不需要维护/发送原始源。pyc 文件可能无法在操作系统和 Python 版本之间移植。移动 Python 模块时,将 pyc 文件留在后面并复制或发送源代码并让主机 python 生成新的 pyc 文件会更安全。
顺便说一句,从 Python 3.2 开始,.pyc 文件不再进入源文件夹,而是进入__pycache__
(在源文件夹中)。