如何从Python脚本生成.pyc文件

Mik*_*lMC 8 python terminal pyc

我知道当Python脚本在其他python脚本中导入时,会创建一个.pyc脚本.有没有其他方法可以使用linux bash终端创建.pyc文件?

Use*_*007 8

使用以下命令:

python -m compileall <your_script.py>
Run Code Online (Sandbox Code Playgroud)

这将your_script.pyc在同一目录中创建文件.

您也可以将目录传递为:

python -m compileall <directory>
Run Code Online (Sandbox Code Playgroud)

这将为目录中的所有.py文件创建.pyc文件

其他方法是创建另一个脚本

import py_compile
py_compile.compile("your_script.py")
Run Code Online (Sandbox Code Playgroud)

它还会创建your_script.pyc文件.您可以将文件名作为命令行参数


vau*_*tah 6

你可以使用该py_compile模块.从命令行运行它(-m选项):

当此模块作为脚本运行时,main()用于编译命令行上指定的所有文件.

例:

$ tree
.
??? script.py

0 directories, 1 file
$ python3 -mpy_compile script.py
$ tree
.
??? __pycache__
?   ??? script.cpython-34.pyc
??? script.py

1 directory, 2 files
Run Code Online (Sandbox Code Playgroud)

compileall 提供类似的功能,使用它你会做类似的事情

$ python3 -m compileall ...
Run Code Online (Sandbox Code Playgroud)

... 要编译的文件或包含源文件的目录在哪里递归遍历.


另一种选择是导入模块:

$ tree
.
??? module.py
??? __pycache__
?   ??? script.cpython-34.pyc
??? script.py

1 directory, 3 files
$ python3 -c 'import module'
$ tree
.
??? module.py
??? __pycache__
?   ??? module.cpython-34.pyc
?   ??? script.cpython-34.pyc
??? script.py

1 directory, 4 files
Run Code Online (Sandbox Code Playgroud)

-c 'import module'不同于-m module,因为前者不会if __name__ == '__main__':module.py中执行块.