Frage Wie überprüfe ich, welche Version von Python mein Skript ausführt?


Wie kann ich überprüfen, welche Version des Python-Interpreters mein Skript interpretiert?


843
2017-07-07 16:17


Ursprung


Antworten:


Diese Information ist verfügbar in der sys.version string in der sys Modul:

>>> import sys

Für Menschen lesbar:

>>> 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)]

Zur weiteren Verarbeitung:

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

Um sicherzustellen, dass ein Skript mit einer minimalen Versionsanforderung des Python-Interpreters ausgeführt wird, fügen Sie dieses Ihrem Code hinzu:

assert sys.version_info >= (2,5)

Dies vergleicht Haupt- und Nebenversionsinformationen. Add micro (=0, 1usw.) und sogar releaselevel (='alpha','final'usw.) zum Tupel, wie Sie möchten. Beachten Sie jedoch, dass es fast immer besser ist, zu "ducken", ob eine bestimmte Funktion vorhanden ist, und wenn nicht, Workaround (oder Bail-Out). Manchmal gehen Funktionen in neueren Versionen verloren und werden durch andere ersetzt.


1042
2017-07-07 16:20



Über die Befehlszeile (beachten Sie das Großbuchstabe 'V'):

python -V

Dies ist in 'man python' dokumentiert.


266
2017-07-22 19:50



ich mag sys.hexversion für solche Sachen.

http://docs.python.org/library/sys.html#sys.hexversion

>>> import sys
>>> sys.hexversion
33883376
>>> '%x' % sys.hexversion
'20504f0'
>>> sys.hexversion < 0x02060000
True

89
2018-06-10 20:08



Ihre beste Wette ist wahrscheinlich ungefähr so:

>>> 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
>>> 

Darüber hinaus können Sie Ihre Importe immer in einem einfachen Versuch verpacken, der Syntaxfehler auffangen sollte. Und zu @ Heikkis Punkt ist dieser Code mit viel älteren Versionen von Python kompatibel:

>>> try:
...     from my_module import twoPointSixCode
... except Exception: 
...     print "can't import, probably because your python is too old!"
>>>

60
2018-06-10 16:06



Benutzen platformist es python_version von der stdlib:

>>> from platform import python_version
>>> print(python_version())
2.7.8

47
2017-08-25 01:11



Setzen Sie etwas wie:

#!/usr/bin/env/python
import sys
if sys.version_info<(2,6,0):
  sys.stderr.write("You need python 2.6 or later to run this script\n")
  exit(1)

ganz oben in deinem Skript.

Beachten Sie, dass ältere Python-Versionen möglicherweise nicht in der Lage sind, das Skript selbst zu laden. Daher wird es nicht weit genug gehen, um diesen Fehler zu melden. Um dieses Problem zu umgehen, können Sie das oben genannte in einem Skript ausführen, das das Skript mit dem moderneren Code importiert.


46
2018-06-10 16:08



Hier ist eine kurze Kommandozeilenversion, die sofort beendet wird (praktisch für Skripte und automatische Ausführung):

python -c "print(__import__('sys').version)"

Oder nur das Dur, Moll und Mikro:

python -c "print(__import__('sys').version_info[:1])" # (2,)
python -c "print(__import__('sys').version_info[:2])" # (2, 7)
python -c "print(__import__('sys').version_info[:3])" # (2, 7, 6)

20
2017-09-02 20:02



Der einfachste Weg

Geben Sie einfach python in Ihr Terminal ein und Sie können die Version sehen  wie folgt

desktop:~$ python
Python 2.7.6 (default, Jun 22 2015, 18:00:18) 
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 

6
2018-02-09 14:11



import sys
sys.version.split(' ')[0]

sys.version gibt dir was du willst, wähle einfach die erste Nummer :)


5
2017-07-07 16:20