python3 -O file.py没有创建file.pyo

时间:2017-07-17 08:53:53

标签: python python-3.x bytecode pyo

我写了一个简单的脚本test.py,其中包含:

print('hello')

然后使用python -O test.py来运行它。我希望这可以创建一个test.pyo文件,但事实并非如此。

我的版本是Python 3.5.2。为什么没有创建缓存文件?

1 个答案:

答案 0 :(得分:5)

Python仅为导入的模块创建字节码缓存文件。主脚本(此处为test.py)未缓存。无论应用什么优化级别都无关紧要。

导入 test

$ python -O -c 'import test'
hello
$ ls __pycache__
test.cpython-35.opt-1.pyc

请注意,缓存文件是在名为__pycache__单独目录中创建的,并且文件名不仅基于模块名称,还基于Python版本和优化水平;使用-OO获取.opt-2。从Python 3.5开始,不再使用.pyo文件扩展名,请参阅PEP 488 -- Elimination of PYO files,并参阅PEP 3147 -- PYC Repository Directories了解为何使用单独的目录。

如果您想预编译模块,请使用python3 -m compileall tool