Πώς μπορώ να ελέγξω ποια έκδοση της Python εκτελεί το σενάριό μου;

Πώς μπορώ να ελέγξω ποια έκδοση του διερμηνέα Python ερμηνεύει το σενάριό μου;

Λύση

Οι πληροφορίες αυτές είναι διαθέσιμες στη συμβολοσειρά sys.version της ενότητας sys:

>>> import sys

Αναγνώσιμο από τον άνθρωπο:

>>> print(sys.version)  # parentheses necessary in python 3.       
2.5.2 (r252:60911, Jul 31 2008, 17:28:52) 
[GCC 4.2.3 (Ubuntu 4.2.3-2ubuntu7)]

Για περαιτέρω επεξεργασία:

>>> sys.version_info
(2, 5, 2, 'final', 0)
# or
>>> sys.hexversion
34014192

Για να διασφαλίσετε ότι ένα σενάριο εκτελείται με ελάχιστες απαιτήσεις έκδοσης του διερμηνευτή Python προσθέστε αυτό στον κώδικά σας:

assert sys.version_info >= (2, 5)

Αυτό συγκρίνει τις πληροφορίες της κύριας και της δευτερεύουσας έκδοσης. Προσθέστε micro (=0, 1, κ.λπ.) και ακόμη και releaselevel (='alpha','final', κ.λπ.) στην πλειάδα όπως θέλετε. Σημειώστε ωστόσο, ότι είναι σχεδόν πάντα καλύτερο να "σκύβετε" να ελέγχετε αν ένα συγκεκριμένο χαρακτηριστικό υπάρχει, και αν όχι, να το παρακάμψετε (ή να το εγκαταλείψετε). Μερικές φορές τα χαρακτηριστικά εξαφανίζονται σε νεότερες εκδόσεις, καθώς αντικαθίστανται από άλλα.

Σχόλια (5)

Το καλύτερο που έχετε να κάνετε είναι μάλλον κάτι τέτοιο:

>>> import sys
>>> sys.version_info
(2, 6, 4, 'final', 0)
>>> if not sys.version_info[:2] == (2, 6):
...    print "Error, I need python 2.6"
... else:
...    from my_module import twoPointSixCode
>>> 

Επιπλέον, μπορείτε πάντα να τυλίγετε τις εισαγωγές σας σε μια απλή try, η οποία θα πρέπει να πιάνει συντακτικά λάθη. Και, στο σημείο του @Heikki's, αυτός ο κώδικας θα είναι συμβατός με πολύ παλαιότερες εκδόσεις της python:

>>> try:
...     from my_module import twoPointSixCode
... except Exception: 
...     print "can't import, probably because your python is too old!"
>>>
Σχόλια (4)
import sys
sys.version.split(' ')[0]

sys.version σας δίνει αυτό που θέλετε, απλά επιλέξτε τον πρώτο αριθμό :)

Σχόλια (1)