Ich habe mit pyglet gespielt. Es ist sehr nett. wenn ich meinen Code jedoch ausgeführt, die in einer ausführbaren Datei ist (nennen wir es game.py) mit dem Präfix der üblichenProgrammatische Steuerung der Python-Optimierung?
#!/usr/bin/env python
von
./game.py
tun, dann ist es ein bisschen klobig. Aber wenn ich es laufen mit
python -O ./game.py
oder
PYTHONOPTIMIZE=1 ./game.py
dann seine super-glatt.
Mir ist egal, warum es langsam ohne Optimierung läuft; pyglets Dokumentation erwähnt, dass die Optimierung zahlreiche Asserts und auch OpenGLs Fehlerüberprüfung deaktiviert, und ich bin froh, dass ich es dabei belassen werde.
Meine Frage ist: Wie stellen Leute, die Python-Code verteilen, sicher, dass die Endbenutzer (ohne Interesse am Debuggen oder Ändern des Codes) die optimierte Version des Codes ausführen. Sicherlich gibt es einen besseren Weg, als den Leuten zu sagen, dass sie Optimierungen in den Versionshinweisen verwenden (die sie wahrscheinlich sowieso nicht lesen werden).
Unter Linux kann ich ein Skript ./game
bieten einfach die Datei für Endbenutzer auszuführen:
#!/bin/sh
PYTHONOPTIMIZE=1 ./game.py $*
aber das ist nicht sehr Cross-Plattform.
Ich habe eine Idee, ich sollte die #!
Linie
#!/usr/bin/env PYTHONOPTIMIZE=1 python
oder
#!/usr/bin/env python -O
aber die ändern können, scheinen nicht wie erwartet zu funktionieren, und ich bin nicht sicher, was sie unter Windows machen würden.
Gibt es eine Möglichkeit, die Optimierung aus dem Code zu steuern, von dem ich nichts weiß? Etwas wie:
import runtime
runtime.optimize(True)
Was von Menschen in diesem Bereich Best-Practice betrachtet hat Code Python Multi-Plattform-Versand?
Dies ist keine Antwort, da S.Lotts Antwort vollständig korrekt und erschöpfend war. Gehen Sie mit game.sh und game.bat, es funktioniert. Aber nur ein Kommentar: Die #! Zeile macht absolut nichts auf Windows, es wird komplett ignoriert. –