J'ai joué avec pyglet. C'est très gentil. Cependant, si je lance mon code, qui est dans un fichier exécutable (appeler game.py) préfixé avec l'habituelContrôle par programme de l'optimisation python?
#!/usr/bin/env python
en faisant
./game.py
alors il est un peu maladroit. Mais si je le dirige avec
python -O ./game.py
ou
PYTHONOPTIMIZE=1 ./game.py
alors son super-lisse.
Je ne m'inquiète pas beaucoup pourquoi il fonctionne lentement sans optimisation; La documentation de pyglet mentionne que l'optimisation désactive de nombreuses assertions et aussi la vérification d'erreurs d'OpenGL, et je suis heureux de m'en tenir là.
Ma question est: comment les gens distribuant du code Python s'assurent-ils que les utilisateurs finaux (sans intérêt pour le débogage ou la modification du code) exécutent la version optimisée du code. Il y a sûrement un meilleur moyen que de simplement dire aux gens de s'assurer qu'ils utilisent l'optimisation dans les notes de mise à jour (qu'ils ne liront probablement pas de toute façon).
Sur Linux, je peux facilement fournir un script ./game
pour exécuter le fichier pour les utilisateurs finaux:
#!/bin/sh
PYTHONOPTIMIZE=1 ./game.py $*
mais ce n'est pas très multiplateformes.
J'ai une idée que je devrais être en mesure de changer la ligne #!
à
#!/usr/bin/env PYTHONOPTIMIZE=1 python
ou
#!/usr/bin/env python -O
mais ceux qui ne semblent pas fonctionner comme prévu, et je ne suis pas sûr de ce qu'ils feraient sur Windows.
Existe-t-il un moyen de contrôler l'optimisation à l'intérieur du code que je ne connais pas? Quelque chose comme:
import runtime
runtime.optimize(True)
Ce qui est considéré comme les meilleures pratiques dans ce domaine par des personnes SHIPPING python multi-plateforme?
Ceci n'est pas une réponse, car la réponse de S.Lotts était complètement correcte et exhaustive. Allez avec game.sh et game.bat, ça marche. Mais juste un commentaire: Le #! ligne ne fait absolument rien sur Windows, c'est complètement ignoré. –