2

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

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

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

4

2 回答 2

4

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

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

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

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

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

因此,最佳实践是分发 .py 文件并让 setup.py 在安装期间构建 .pyc。

于 2016-11-13T01:08:04.703 回答
2

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

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

于 2016-11-13T01:11:25.417 回答