python如何创建 .pyc 文件?
当一个模块首次被导入时(或自当前已编译文件创建后源文件被修改时),将会在对应 .py
文件所在目录的 __pycache__
子目录下创建一个包含已编译代码的 .pyc
文件。 该 .pyc
文件的文件名的开头部分将与对应 .py
文件名相同,并以 .pyc
为后缀,中间部门则是基于创建它的特定 python
二进制代码版本。 (详情参见 PEP 3147。)
无法创建 .pyc
文件的可能原因是包含源文件的目录存在权限问题,这意味着 __pycache__
子目录无法被创建。 举例来说,如果你以某一用户来开发程序但以另一用户身份来运行程序时就可能发生问题,测试 Web 服务器就属于这种情况。
除非设置了 PYTHONDONTWRITEBYTECODE
环境变量,否则当你导入模块并且 Python 具有创建 __pycache__
子目录并将已编译模块写入该子目录的能力(权限、存储空间等等)时就会自动创建 .pyc 文件。
在最高层级运行的 Python 脚本不被视为导入,因此不会创建 .pyc
文件。 例如,如果你有一个最高层级模块文件 foo.py
,它又导入了另一个模块 xyz.py
,当你运行 foo
模块 (通过输入终端命令 python foo.py
),则将为 xyz
创建一个 .pyc
,因为 xyz
是被导入的,但不会为 foo
创建 .pyc
文件,因为 foo.py
不是被导入的。
如果你需要为 foo
创建 .pyc
文件 —— 即为不是被导入的模块创建 .pyc
文件 —— 你可以使用 py_compile
和 compileall
模块。
py_compile
模块能够手动编译任意模块。 一种做法是交互式地使用该模块中的 compile()
函数:
>>>
>>> import py_compile >>> py_compile.compile("foo.py")