This answer告诉我,运行 .py 文件时会创建 .pyc 文件,据我所知,这可以节省重新运行时的加载时间。这让我想知道创建 .pyc 后 .py 文件的意义是什么。
备份或共享代码时,我不想包含冗余或无关的文件。我应该关注哪种文件类型?
附带问题:我有一个脚本调用另一个脚本。运行它们后,被调用的脚本写入了 .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 将 pdb3
编译为 pdb3.pyc
。好吧,我仍然会调用 pdb3
并且 .pyc 毫无用处。那么为什么要让道路变得困惑呢?
安装通常以 root 或管理员身份运行,因此您对这些路径具有写入权限。但以后您作为普通用户将无法对它们进行写访问。您可以在安装过程中让 setup.py
生成 .pyc 文件。无论您拥有什么Python,您都会获得正确的.pyc文件,并且由于您在安装过程中以root/admin身份运行,因此您仍然可以访问这些目录。稍后尝试构建 .pyc 文件会出现问题,因为普通用户无权访问这些目录。
因此,最佳实践是分发 .py 文件并让 setup.py 在安装过程中构建 .pyc。
关于python - 共享/备份时使用 .py 或 .pyc 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40569397/