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

标签 python pyc

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/

相关文章:

python - 如何在 Android 上使用 Selenium Chromedriver

python - 在列表中查找字符串的索引

python - 正确导入模块类python

python - 如何在客户环境中运行 python 生产

python - 预编译 Python 脚本并将其包含在另一个 Python 程序中

Python 在 Linux 上请求 403 但在 Windows 上工作

python - Spark 作业未结束 : Show of dataframe

python - python 文件扩展名 .pyc .pyd .pyo 代表什么?

python - 如何将多个 py 文件编译为一个文件?