我写了一个简单的脚本test.py
,包含:
print('hello')
然后python -O test.py
用来运行它。我希望这会创建一个test.pyo
文件,但它没有。
我的版本是 Python 3.5.2。为什么没有创建缓存文件?
我写了一个简单的脚本test.py
,包含:
print('hello')
然后python -O test.py
用来运行它。我希望这会创建一个test.pyo
文件,但它没有。
我的版本是 Python 3.5.2。为什么没有创建缓存文件?
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 -消除 PYO 文件,并参阅PEP 3147 - PYC 存储库目录了解为什么使用单独的目录。
如果要预编译模块,请使用python3 -m compileall
工具.