Seite 1 von 1
Python-Version herausbekommen :)
Verfasst: Dienstag 21. März 2006, 09:30
von Necoro
hmmm ... hab schon n bissken im forum gesucht - aber nix gefunden

- gibt es eine Möglichkeit, die aktuell laufende Python-Version herauszufeinden?
Grund: Wenn Python >= 2.4. ist, möchte ich das Modul subprocess laden - und wenn die Version kleiner ist, eben nicht

Verfasst: Dienstag 21. März 2006, 09:41
von Rebecca
Du kannst das Laden eines Moduls einfach ein eine try-Block einschliessen.
Code: Alles auswählen
try:
import subprocess;
except ImportError:
print "Module subprocess not available";
else:
#do someting...
Re: Python-Version herausbekommen :)
Verfasst: Dienstag 21. März 2006, 10:12
von gerold
Necoro hat geschrieben:gibt es eine Möglichkeit, die aktuell laufende Python-Version herauszufeinden?
Hi Necoro!
Ich würde wie Rebecca mit try und except arbeiten. Aber um die Frage vollständig zu beantworten:
Code: Alles auswählen
>>> import sys
>>> sys.version
'2.4 (#60, Nov 30 2004, 11:49:19) [MSC v.1310 32 bit (Intel)]'
>>> sys.version_info
(2, 4, 0, 'final', 0)
>>>
mfg
Gerold

Re: Python-Version herausbekommen :)
Verfasst: Dienstag 21. März 2006, 10:20
von jens
Necoro hat geschrieben:Grund: Wenn Python >= 2.4. ist, möchte ich das Modul subprocess laden - und wenn die Version kleiner ist, eben nicht

Du kannst subprocess einfach nachrüsten, siehe:
http://www.python-forum.de/viewtopic.php?p=33403#33403
Wenn du
subprocess.py von Python 2.4 in ein Unterverzeichnis (z.B. backports) packst, könntest du folgendes tun:
Code: Alles auswählen
try:
import subprocess
except ImportError:
from backports import subprocess
Im Unterverzeichnis ./backports muß natürlich eine leere __init__.py Datei liegen!
Verfasst: Dienstag 21. März 2006, 15:38
von Necoro
jo ... thx

Verfasst: Dienstag 21. März 2006, 15:41
von jens
Re: Python-Version herausbekommen :)
Verfasst: Dienstag 21. März 2006, 17:01
von Joghurt
Necoro hat geschrieben:Grund: Wenn Python >= 2.4. ist, möchte ich das Modul subprocess laden - und wenn die Version kleiner ist, eben nicht

Die bessere Lösung wurde ja schon gepostet.
Anstatt zu versuchen, einen Fehler zu verhindern (indem du dir überlegst, wann er auftreten kann), ist es besser, auf den Fehler zu reagieren.
Denn was machst du, wenn z.B. subprocess nicht unter FooBar läuft, oder jemand subprocess nach 2.3 portiert hat, etc, pp.
Wenn du irgendwo hinmusst, schaust du ja auch nicht erst in den Tank deines Autos, kontrollierst dann, ob der Luftfilter sauber ist, und kommst dann zu dem Schluss, dass du jetzt nur den Schlüssel umdrehen und Gas geben musst, um zum Ziel zu kommen. (Und wenn der Motor nicht läuft, bleibst du stumpf im Auto sitzen und beharrst darauf, dass der Motor läuft, denn du hast ja jede Fehlerquelle ausgeschlossen)
Vielmehr drehst du gleich den Schlüssel um, und wenn der Motor nicht anspringt, fährst du halt mit dem Bus
Edit: typo
Verfasst: Dienstag 21. März 2006, 18:34
von henning
Die Metapher mit dem Auto für EAFP is Klasse, darf man dich damit zietieren oder kommt das aus einer anderen Quelle?
Verfasst: Dienstag 21. März 2006, 19:06
von Joghurt
Darft mich gerne Zitieren, aber nur, wenn du mit verräts, was EAFP ist.
"Europäische Akademie für Finanzplanung" sowie "European Association of Fish Pathologists" ist es ja wohl nicht...
Verfasst: Dienstag 21. März 2006, 19:19
von Leonidas
Joghurt hat geschrieben:Darft mich gerne Zitieren, aber nur, wenn du mit verräts, was EAFP ist.
"Europäische Akademie für Finanzplanung" sowie "European Association of Fish Pathologists" ist es ja wohl nicht...
Nein, wahrlich nicht
Easier to ask for forgiveness than permission
Verfasst: Dienstag 21. März 2006, 20:33
von henning
@Joghurt: Sorry für die unaufgelöste Abkürzung, hatte angenommen, das ist den meisten Pythoniern ein Begriff ,-)
Verfasst: Mittwoch 22. März 2006, 07:29
von BlackJack
try:
Womit wir jetzt EAFP mal live gesehen haben. LBYL wäre es gewesen gewesen wenn Henning erstmal gefragt hätte ob denn auch alle die Abkürzung EAFP kennen.
catch AbbrvError:
LBYL = Look Before You Leap
Verfasst: Mittwoch 22. März 2006, 21:49
von Joghurt
BlackJack hat geschrieben:catch AbbrvError:
Ähem...
Das "raise"t einen SyntaxError

Verfasst: Mittwoch 22. März 2006, 22:48
von BlackJack
Oh man, das ist vielleicht peinlich...
