python3 -O file.py 没有创建 file.pyo
python3 -O file.py didn't create file.pyo
我写了一个简单的脚本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 -- Elimination of PYO files, and see PEP 3147 -- PYC Repository Directories 了解为什么使用单独的目录。
如果要预编译模块,请使用 python3 -m compileall
tool。
我写了一个简单的脚本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 -- Elimination of PYO files, and see PEP 3147 -- PYC Repository Directories 了解为什么使用单独的目录。
如果要预编译模块,请使用 python3 -m compileall
tool。