当 sharing/backing 起来时使用 .py 或 .pyc 文件?

Use .py or .pyc file when sharing/backing up?

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

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

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

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

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

在您考虑其安装模型之前,

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

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

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

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

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

不过,我建议包括您的源代码并省略您的 .pyc 文件,因为它们是由 Python 解释器自动生成的。此外,如果您或其他人稍后想要 revise/revisit 您的源代码,您将需要 .py 文件。此外,通常最好只包含源代码。