【发布时间】:2009-07-07 13:06:14
【问题描述】:
我一直在玩pyglet。这是很不错的。但是,如果我运行我的代码,它位于一个可执行文件(称为 game.py)中,前缀通常为
#!/usr/bin/env python
通过做
./game.py
那就有点笨拙了。但是如果我用
运行它python -O ./game.py
或
PYTHONOPTIMIZE=1 ./game.py
然后它的超级光滑。
我不在乎为什么它在没有优化的情况下运行缓慢; pyglet 的文档提到优化会禁用大量断言以及 OpenGL 的错误检查,我很乐意将其保留在此。
我的问题是:分发 Python 代码的人如何确保最终用户(对调试或修改代码的兴趣为零)运行代码的优化版本。除了告诉人们确保他们在发行说明中使用优化(他们可能无论如何都不会阅读)之外,肯定有更好的方法吗?
在 Linux 上,我可以轻松地提供一个 ./game 脚本来为最终用户运行该文件:
#!/bin/sh
PYTHONOPTIMIZE=1 ./game.py $*
但这不是很跨平台。
我有一个想法,我应该能够将 #! 行更改为
#!/usr/bin/env PYTHONOPTIMIZE=1 python
或
#!/usr/bin/env python -O
但这些似乎没有按预期工作,我不确定它们在 Windows 上会做什么。
是否有某种方法可以从我不知道的代码中控制优化? 比如:
import runtime
runtime.optimize(True)
发布多平台 Python 代码的人们认为该领域的最佳实践是什么?
【问题讨论】:
-
这不是一个答案,因为 S.Lotts 的答案是完全正确且详尽的。使用 game.sh 和 game.bat,它可以工作。但只是一个评论:#! line 在 Windows 上完全没有任何作用,它完全被忽略了。
标签: python optimization pyglet multiplatform