This answer告诉我在运行.py文件时会创建.pyc文件,据我所知,重新运行会节省加载时间。这让我想知道.py文件创建之后.py文件的意义。
备份我的代码或共享代码时,我不想包含冗余或无关的文件。我应该关注哪种文件类型?
附带问题:我有一个调用另一个脚本的脚本。运行它们之后,被调用的脚本会写入.pyc文件,但执行调用的主脚本却没有。为什么会这样?
答案 0 :(得分:2)
Python .pyc文件是在导入模块时生成的,而不是在运行顶级脚本时生成的。我不确定你的意思是通过调用,但如果你从命令行运行主脚本并导入了另一个脚本,那么只有导入的脚本才能获得.pyc。
至于分发.pyc文件,它们是次要版本敏感的。如果您捆绑自己的python或分发多个python版本敏感文件,那么也许。但最佳做法是分发.py文件。
在您考虑其安装模型之前,Python的脚本和模块规则似乎有点奇怪。常见的安装模型是可执行文件安装在系统PATH
的某处,共享库安装在库路径的某个位置。
Python' s setup.py
做同样的事情。顶级脚本在PATH上运行,但模块和包在库路径中。例如,在我的系统上,pdb3
(顶级脚本)位于/usr/bin/pdb3
,os
(导入的模块)位于/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
个文件。此外,通常最好只包含您的源代码。