Wie kann ich überprüfen, welche Version des Python-Interpreters mein Skript interpretiert?
Für Python 2.7 müssen wir print("sys.version: {}".format(version))
.
Wie kann ich überprüfen, welche Version des Python-Interpreters mein Skript interpretiert?
Mehrere Antworten enthalten bereits Vorschläge, wie man requête die aktuelle Python-Version. Zu siehe programmatisch die Versionsanforderungen zu ermitteln, würde ich eine der beiden folgenden Methoden anwenden:
# Method 1: (see krawyoti's answer)
import sys
assert(sys.version_info >= (2,6))
# Method 2:
import platform
from distutils.version import StrictVersion
assert(StrictVersion(platform.python_version()) >= "2.6")
Wie Seth sagte, könnte das Hauptskript Folgendes prüfen sys.version_info
(aber beachten Sie, dass dies erst in Version 2.0 aufgetaucht ist. Wenn Sie also ältere Versionen unterstützen wollen, müssen Sie eine andere Versions-Eigenschaft des sys-Moduls überprüfen).
Dennoch müssen Sie darauf achten, dass Sie in der Datei keine Python-Sprachfunktionen verwenden, die in älteren Python-Versionen nicht verfügbar sind. Dies ist zum Beispiel in Python 2.5 und höher erlaubt:
try:
pass
except:
pass
finally:
pass
funktioniert aber nicht in älteren Python-Versionen, weil man nur except OR finally mit dem try vergleichen kann. Für die Kompatibilität mit älteren Python-Versionen müssen Sie also schreiben:
try:
try:
pass
except:
pass
finally:
pass
Nur zum Spaß, im Folgenden eine Möglichkeit, es auf CPython 1.0-3.7b2, Pypy, Jython und Micropython zu tun. Dies ist mehr eine Kuriosität als ein Weg, es in modernem Code zu tun. Ich schrieb es als Teil von http://stromberg.dnsalias.org/~strombrg/pythons/ Das ist ein Skript, mit dem man einen Codeschnipsel auf mehreren Python-Versionen gleichzeitig testen kann, so dass man leicht ein Gefühl dafür bekommt, welche Python-Funktionen mit welchen Python-Versionen kompatibel sind:
via_platform = 0
check_sys = 0
via_sys_version_info = 0
via_sys_version = 0
test_sys = 0
try:
import platform
except (ImportError, NameError):
# We have no platform module - try to get the info via the sys module
check_sys = 1
if not check_sys:
if hasattr(platform, "python_version"):
via_platform = 1
else:
check_sys = 1
if check_sys:
try:
import sys
test_sys = 1
except (ImportError, NameError):
# just let via_sys_version_info and via_sys_version remain False - we have no sys module
pass
if test_sys:
if hasattr(sys, "version_info"):
via_sys_version_info = 1
elif hasattr(sys, "version"):
via_sys_version = 1
else:
# just let via_sys remain False
pass
if via_platform:
# This gives pretty good info, but is not available in older interpreters. Also, micropython has a
# platform module that does not really contain anything.
print(platform.python_version())
elif via_sys_version_info:
# This is compatible with some older interpreters, but does not give quite as much info.
print("%s.%s.%s" % sys.version_info[:3])
elif via_sys_version:
import string
# This is compatible with some older interpreters, but does not give quite as much info.
verbose_version = sys.version
version_list = string.split(verbose_version)
print(version_list[0])
else:
print("unknown")
from sys import version_info, api_version, version, hexversion
print(f"sys.version: {version}")
print(f"sys.api_version: {api_version}")
print(f"sys.version_info: {version_info}")
print(f"sys.hexversion: {hexversion}")
Ausgabe
sys.version: 3.6.5 (v3.6.5:f59c0932b4, Mar 28 2018, 17:00:18) [MSC v.1900 64 bit (AMD64)] sys.api_version: 1013 sys.version_info: sys.version_info(major=3, minor=6, micro=5, releaselevel='final', serial=0) sys.hexversion: 50726384
@Marco, richtig. String-Formatierung ist für v 3+ mit Schlüsselwort-Argumenten getan. kann als print('[{},{},{}]'.format(1,2,3)) für Python 2.7 ref getan werden: stackoverflow.com/questions/517355/string-formatting-in-python
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.
6 Stimmen
Im aktuellen Thread geht es um die Überprüfung der Python-Version eines Python-Programms/Skripts. Falls Sie die Version des auf Ihrem Rechner installierten Python-Interpreters über die Kommandozeile überprüfen wollen, lesen Sie bitte den folgenden Beitrag - Welche Version von Python habe ich installiert?
12 Stimmen
Hier ist ein lustiger Weg, Python 3 und 2 zu trennen...
python_version = int(str(range(3))[-2])
0 Stimmen
@RBT: Für eine einzeilige Prüfung von der Kommandozeile aus, siehe meine Antwort .