Seite 1 von 1

best practice: Python Version prüfen >=3

Verfasst: Freitag 27. März 2020, 18:32
von conloos
Hallo @all,

ich arbeite an einem kleinen Projekt.
Auf meinem Betriebssystem ist Python 2 und 3 installiert.
Daher soll vor dem Start im "pre-flight-check" geprüft werden ob python3 zur Ausführung genutzt wird und anschließen wird der Rest gestartet.

Das Prüfen ist nicht das Problem, sondern ich benutze viel Python3 (type annotations und f-strings).
Wenn ich die Klassen lade, dann bekomme ich schon beim Import Exceptions falls python2 genutzt wird und ich die Python Version sauber abfragen kann.

Daher importiere ich die benötigten Klassen innerhalb der Funktionen die, die Umgebung prüfen.

Ich hatte schon überlegt den pre-flight-check in zwei Stufen aufzubauen und:
- in der ersten die Python Version zu prüfen und
- in der zweiten das restliche Environment.

Das gefällt mir nicht und deshalb meine Frage, wie man hier am besten vorgeht?


Gruß Frank

Re: best practice: Python Version prüfen >=3

Verfasst: Freitag 27. März 2020, 19:02
von kbr
Vor ein paar Jahren wäre die Devise gewesen, die Programme als Python 2 mit Backports aus Python 3 zu schreiben, bzw. six oder modernizer zu nutzen. Das geht inzwischen aber alles in Richtung legathy, außer für über Jahre gewachsene große Projekte, die nicht so einfach zu portieren sind.

Da Du aber auch über Python 3 verfügst, stellt sich diese Aufgabe nicht mehr. Meine Empfehlung: verzichte auf irgendwelche "pre-flights". Schreibe für Python 3 und nimm Python 3 (>= 3.6, da Du f-Strings verwendest).

Re: best practice: Python Version prüfen >=3

Verfasst: Freitag 27. März 2020, 21:22
von __blackjack__
Welche Python-Version verwendet wird entscheidet ja eigentlich die She-Bang-Zeile. Wer versucht das explizit mit Python 2 auszuführen merkt ja sehr schnell, dass das nicht funktioniert.

Re: best practice: Python Version prüfen >=3

Verfasst: Freitag 27. März 2020, 22:06
von hyle
conloos hat geschrieben: Freitag 27. März 2020, 18:32 Das gefällt mir nicht und deshalb meine Frage, wie man hier am besten vorgeht?
Ich verstehe die Frage ansich nicht , denn entweder:
__blackjack__ hat geschrieben: Freitag 27. März 2020, 21:22 Welche Python-Version verwendet wird entscheidet ja eigentlich die She-Bang-Zeile.
oder ein Skript wird mit vorangestelltem Interpreter für Python 2 oder 3 gestartet.

Wozu also eine Abfrage welche Version, wenn nur ein und dann noch bekanntes System existiert und man Skripte entsprechend starten kann?

Re: best practice: Python Version prüfen >=3

Verfasst: Dienstag 31. März 2020, 08:00
von DeaD_EyE
Man könnte fieses Zeug anstellen.

Shebang startet Python2, Python 2 detektiert Python 3, Python 2 ersetzt seinen eigenen Prozess durch Python 3.
Wenn kein Python 3 auf der Maschine ist, kann natürlich auch kein Python 3 gestartet werden.

Re: best practice: Python Version prüfen >=3

Verfasst: Dienstag 31. März 2020, 12:36
von __blackjack__
Und es fällt auch auf die Nase wenn kein Python 2 da ist. Unter Windows wäre das dann noch mal umständlicher wenn Python 3 installiert ist, *.py also mit der ``py.exe`` verknüpft ist, und die dann wegen dem She-Bang dann erst mal Python 2 startet, dass dann wiederum Python 3 startet – ich glaube mir wird gerade ein bisschen schwindelig. 😵