如何在指令碼中檢查 Python 版本
Jinku Hu
2023年10月10日
Python
Python Version
在很多情況下,我們需要在 Python 指令碼中得到 Python 版本資訊,或更確切地說是執行 Python 指令碼檔案的 Python 直譯器版本。
我們有以下幾種方法可以來得到 Python 版本資訊:
sys.version方法sys.version_info方法platform.python_version()方法six模組方法
sys.version 方法
Python 版本資訊可以從 sys 模組中的 sys.version 得到。
在 Python 2.x 中
>>> import sys
>>> sys.version
'2.7.10 (default, May 23 2015, 09:44:00) [MSC v.1500 64 bit (AMD64)]'
或在 Python 3.x 中
>>> import sys
>>> sys.version
'3.7.0 (v3.7.0:1bf9cc5093, Jun 27 2018, 04:59:51) [MSC v.1914 64 bit (AMD64)]'
sys.version_info 方法
sys.version 返回一個字串,其中包含可讀的當前 Python 直譯器的版本資訊。但是這些資訊類似 major release number 並且 micro release number 需要進行額外的處理才能在程式碼中進一步使用。
sys.version_info 通過將版本資訊作為命名元組返回,可以輕鬆解決此問題。它返回的版本資料是,
| 資料 | 描述 |
|---|---|
major |
主要版本號 |
micro |
補丁釋出號 |
minor |
次要發行號 |
releaselevel |
alpha,beta,candidate 或者 release |
serial |
序列號 |
>>> import sys
>>> sys.version_info
sys.version_info(major=2, minor=7, micro=10, releaselevel='final', serial=0)
你可以比較當前版本的參考版本簡單地使用 >,>=,==,<= 或 < 操作符。
>>> import sys
>>> sys.version_info >= (2, 7)
True
>>> sys.version_info >= (2, 7, 11)
False
我們可以在指令碼中新增 assert,以確保指令碼以最低 Python 版本的要求執行。
import sys
assert sys.version_info >= (3, 7)
如果直譯器不符合版本要求,則會引發 AssertionError。
Traceback (most recent call last):
File "C:\test\test.py", line 4, in <module>
assert sys.version_info >= (3, 7)
AssertionError
platform.python_version() 方法
platform 模組中的 python_version() 以字串形式返回 Python 版本 major.minor.patchlevel。
>>> from platform import python_version
>>> python_version()
'3.7.0'
或類似於 sys.version_info,platform 也有一種方法可以將 Python 版本作為 (major, minor, patchlevel) 字串元組返回 - python_version_tuple()
>>> import platform
>>> platform.python_version_tuple()
('3', '7', '0')
six 模組方法
如果僅需要檢查 Python 版本是 Python 2.x 還是 Python 3.x,則可以使用 six 模組 來完成。
from __future__ import print_function
import six
if six.PY2:
print("Python 2.x")
if six.PY3:
print ("Python 3.x")
Enjoying our tutorials? Subscribe to DelftStack on YouTube to support us in creating more high-quality video guides. Subscribe
作者: Jinku Hu
