将.py文件编译为.pyo而不使用包装器脚本

ins*_*vfx 11 python

我正在研究为pyo编译相当多的python模块和包.我知道这可以通过设置PYTHONOPTIMIZE环境变量或在启动时指定-O来实现.我想强制执行pyo而不是pyc来产生最小的足迹.为了在我的部署模块中执行此操作,我必须创建一个使用-O选项启动实际脚本的包装器脚本,因为需要在启动解释器之前指定环境变量.

有没有办法绕过这个并以编程方式强制执行pyo创建?

亲切的问候,托尔斯滕

Mar*_*ers 22

要预先编译所有模块,请运行以下命令:

python -O -m compileall /path/to/your/files
Run Code Online (Sandbox Code Playgroud)

蟒蛇compileall模块需要编译的照顾,该-O开关使得输出.pyo文件.

但是,除非-O为每次运行提供切换设置了PYTHONOPTIMIZE环境var,否则不能强制Python使用这些.

请注意,所有-O标志都会禁用该assert语句并将__debug__标志设置为False(并且Python将优化测试).指定-OO并删除文档字符串.除非您使用过多的文档字符串大小或非常慢的调试代码,否则这些不会产生很大的速度差异或空间节省.

请参阅:Python优化(-O或PYTHONOPTIMIZE)有何功能?


小智 5

遗憾的是,从 3.5 版开始,编译优化只生成 .pyc 文件,而不是 .pyo

在 3.5 版更改: legacy 参数只写出 .pyc 文件,而不是 .pyo 文件,无论优化的值是什么。

来自https://docs.python.org/3.6/library/compileall.html