python如何创建.pyc文件?

python

当一个模块首次被导入时(或自当前已编译文件创建后源文件被修改时),将会在对应 .py 文件所在目录的 __pycache__ 子目录下创建一个包含已编译代码的 .pyc 文件。 该 .pyc 文件的文件名的开头部分将与对应 .py 文件名相同,并以 .pyc 为后缀,中间部门则是基于创建它的特定 python 二进制代码版本。 (详情参见 PEP 3147。)

无法创建 .pyc 文件的可能原因是包含源文件的目录存在权限问题,这意味着 __pycache__ 子目录无法被创建。 举例来说,如果你以某一用户来开发程序但以另一用户身份来运行程序时就可能发生问题,测试 Web 服务器就属于这种情况。

除非设置了 PYTHONDONTWRITEBYTECODE 环境变量,否则当你导入模块并且 Python 具有创建 __pycache__ 子目录并将已编译模块写入该子目录的能力(权限、存储空间等等)时就会自动创建 .pyc 文件。

在最高层级运行的 Python 脚本不被视为导入,因此不会创建 .pyc 文件。 例如,如果你有一个最高层级模块文件 foo.py,它又导入了另一个模块 xyz.py,当你运行 foo 模块 (通过输入终端命令 pythonfoo.py),则将为 xyz 创建一个 .pyc,因为 xyz 是被导入的,但不会为 foo 创建 .pyc 文件,因为 foo.py 不是被导入的。

如果你需要为 foo 创建 .pyc 文件 —— 即为不是被导入的模块创建 .pyc 文件 —— 你可以使用 py_compilecompileall 模块。

py_compile 模块能够手动编译任意模块。 一种做法是交互式地使用该模块中的 compile() 函数:

>>>

>>> importpy_compile

>>> py_compile.compile("foo.py")

这将会将 .pyc 文件写入与 foo.py 相同位置下的 __pycache__ 子目录(或者你也可以通过可选参数 cfile 来重载该行为)。

你还可以使用 compileall 模块自动编译一个目录或多个目录下的所有文件。 具体做法可以是在命令行提示符中运行 compileall.py 并提供包含要编译 Python 文件的目录路径:

python-mcompileall.

以上是 python如何创建.pyc文件? 的全部内容, 来源链接: utcz.com/z/520636.html

回到顶部