共享/备份时使用.py或.pyc文件?

时间:2016-11-13 00:55:20

标签: python pyc

This answer告诉我在运行.py文件时会创建.pyc文件,据我所知,重新运行会节省加载时间。这让我想知道.py文件创建之后.py文件的意义。

备份我的代码或共享代码时,我不想包含冗余或无关的文件。我应该关注哪种文件类型?

附带问题:我有一个调用另一个脚本的脚本。运行它们之后,被调用的脚本会写入.pyc文件,但执行调用的主脚本却没有。为什么会这样?

2 个答案:

答案 0 :(得分:2)

Python .pyc文件是在导入模块时生成的,而不是在运行顶级脚本时生成的。我不确定你的意思是通过调用,但如果你从命令行运行主脚本并导入了另一个脚本,那么只有导入的脚本才能获得.pyc。

至于分发.pyc文件,它们是次要版本敏感的。如果您捆绑自己的python或分发多个python版本敏感文件,那么也许。但最佳做法是分发.py文件。

在您考虑其安装模型之前,Python的脚本和模块规则似乎有点奇怪。常见的安装模型是可执行文件安装在系统PATH的某处,共享库安装在库路径的某个位置。

Python' s setup.py做同样的事情。顶级脚本在PATH上运行,但模块和包在库路径中。例如,在我的系统上,pdb3(顶级脚本)位于/usr/bin/pdb3os(导入的模块)位于/usr/lib/python3.4/os.py。假设python将pdb3编译为pdb3.pyc。好吧,我仍然打电话给pdb3而.pyc没用。那么为什么杂乱的路径呢?

以root或管理员身份运行的安装很常见,因此您可以在这些路径上拥有写入权限。但是你以后作为普通用户不会对它们进行写访问。您可以在安装期间setup.py生成.pyc文件。你得到正确的.pyc文件,无论你碰巧遇到什么python,并且由于你在安装过程中以root / admin身份运行,你仍然可以访问这些目录。稍后尝试构建.pyc文件是一个问题,因为普通用户无法访问这些目录。

因此,最佳做法是分发.py文件并在安装过程中使用setup.py构建.pyc。

答案 1 :(得分:1)

如果您只是想运行Python脚本,那么真正需要的只是.pyc,这是从源代码生成的字节码。有关运行.pyc文件的详细信息,请参阅here。我会警告说,有些detials有点曲折。

但是我建议包含您的源代码并省略.pyc文件,因为它们是由Python解释器自动生成的。此外,如果您或其他人希望稍后修改/重新访问您的源代码,您将需要.py个文件。此外,通常最好只包含您的源代码。