Gram z pyglet. To bardzo miłe. Jednakże, jeśli uruchomię mój kod, który jest w pliku wykonywalnego (nazywają to game.py) prefiksem zwykłejProgramowa kontrola optymalizacji Pythona?
#!/usr/bin/env python
wykonując
./game.py
potem to trochę niezgrabne. Ale jeśli uruchomię go z
python -O ./game.py
lub
PYTHONOPTIMIZE=1 ./game.py
następnie jego super-gładką.
Nie obchodzi mnie, dlaczego działa bez optymalizacji; Dokumentacja pyglet wspomina, że optymalizacja wyłącza liczne potwierdzenia, a także sprawdza błędy OpenGL i cieszę się, że to zostawię.
Moje pytanie brzmi: w jaki sposób ludzie rozpowszechniający kod Pythona upewniają się, że użytkownicy końcowi (bez zainteresowania debugowaniem lub modyfikacją kodu) uruchamiają zoptymalizowaną wersję kodu. Na pewno jest lepszy sposób niż tylko mówienie ludziom, aby upewnili się, że używają optymalizacji w notatkach do wydania (których i tak pewnie nie przeczytają)?
W systemie Linux można łatwo zapewnić ./game
skrypt do uruchomienia pliku dla użytkowników końcowych:
#!/bin/sh
PYTHONOPTIMIZE=1 ./game.py $*
ale to nie jest bardzo cross-platform.
Mam pomysł, że powinienem być w stanie zmienić linię #!
do
#!/usr/bin/env PYTHONOPTIMIZE=1 python
lub
#!/usr/bin/env python -O
ale te nie wydają się działać zgodnie z oczekiwaniami, a ja nie jestem jasne, co zrobią w systemie Windows.
Czy istnieje jakiś sposób sterowania optymalizacją z poziomu kodu, którego nie jestem świadomy? Coś jak:
import runtime
runtime.optimize(True)
Co jest uważane za najlepsze praktyki w tej dziedzinie przez ludzi żeglugi wieloplatformowy kodu Pythona?
To nie jest odpowiedź, ponieważ odpowiedź S.Lotts była całkowicie poprawna i wyczerpująca. Idź z game.sh i game.bat, to działa. Ale tylko komentarz: #! linia nie robi absolutnie nic w systemie Windows, jest całkowicie ignorowana. –