He estado jugando con pyglet. Es muy bonito. Sin embargo, si se me acaba mi código, que está en un archivo ejecutable (lo llaman game.py) como prefijo el habitualControl programático de la optimización de Python?
#!/usr/bin/env python
haciendo
./game.py
entonces es un poco torpe. Pero si me quedo con
python -O ./game.py
o
PYTHONOPTIMIZE=1 ./game.py
entonces su muy suave.
No me importa mucho por qué se ejecuta lento sin optimización; La documentación de pyglet menciona que la optimización deshabilita numerosas afirmaciones y también la comprobación de errores de OpenGL, y estoy feliz de dejarlo así.
Mi pregunta es: ¿cómo las personas que distribuyen el código Python se aseguran de que los usuarios finales (sin interés en depurar o modificar el código) ejecuten la versión optimizada del código? Seguramente hay una manera mejor que solo decirle a la gente que se asegure de que usan la optimización en las notas de la versión (que probablemente no leerán de todos modos).
En Linux que puede proporcionar fácilmente un script ./game
para ejecutar el archivo para los usuarios finales:
#!/bin/sh
PYTHONOPTIMIZE=1 ./game.py $*
pero eso no es muy multiplataforma.
Tengo una idea que debería ser capaz de cambiar la línea #!
a
#!/usr/bin/env PYTHONOPTIMIZE=1 python
o
#!/usr/bin/env python -O
pero los que no parecen funcionar como se esperaba, y no estoy seguro de lo que harían en Windows.
¿Hay alguna forma de controlar la optimización desde el código que desconozco? Algo así como:
import runtime
runtime.optimize(True)
lo que se considera la mejor práctica en este ámbito por las personas que envían el código Python multiplataforma?
Esto no es una respuesta, ya que la respuesta de S.Lotts fue completamente correcta y exhaustiva. Ve con game.sh y game.bat, funciona. Pero solo un comentario: ¡El #! línea no hace absolutamente nada en Windows, se ignora por completo. –