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
Ach, zum ursprünglichen Problem: http://wiki.python.de/Python_Version_abfragen

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... :oops: