python plot教學




如何檢查Python的哪個版本正在運行我的腳本? (11)

如何檢查Python解釋器的哪個版本正在解釋我的腳本?


最簡單的方法

只需在終端中輸入python,你就可以看到如下的版本

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

你最好的選擇可能是這樣的:

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

另外,你總是可以用一個簡單的嘗試來包裝你的導入,這應該會捕獲語法錯誤。 而且,對於@ Heikki的觀點來說,這段代碼將與Python的老版本兼容:

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


如果你在linux上工作只是給命令python輸出會是這樣的

Python 2.4.3(#1,2009年6月11日,14:09:37)

linux2上的[GCC 4.1.2 20080704(Red Hat 4.1.2-44)]

輸入“幫助”,“版權”,“信用”或“許可證”以獲取更多信息。


從命令行(注意大寫'V'):

python -V

這在'man python'中有記錄。



把這樣的東西:

#!/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)

在腳本的頂部。

請注意,根據腳本中的其他內容,比目標版本更舊的python版本可能無法加載腳本,因此無法報告此錯誤。 作為一種解決方法,您可以在腳本中使用更現代的代碼運行上述腳本。


有了six模塊,你可以通過以下方式來完成:

import six

if six.PY2:
  # this is python2.x
else:
  # six.PY3
  # this is python3.x

為了好玩,以下是在CPython 1.0-3.7b2,Pypy,Jython和Micropython上做的一種方法。 這是一種好奇心,而不是現代代碼中的一種方式。 我將其作為http://stromberg.dnsalias.org/~strombrg/pythons/一部分編寫,它是一個腳本,用於同時測試多個版本的Python代碼片段,因此您可以輕鬆地了解python功能與python的哪些版本兼容:

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

該信息在sys模塊的sys.version字符串中可用:

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

這比較了主版本和次版本信息。 只要你喜歡,就可以將微(= 0等)和releaselevel(= 'alpha''final'等)添加到元組中。 但請注意,“鴨”幾乎總是比較好,以檢查是否有某個功能,如果沒有,則解決方法(或退出)。 有時功能會在新版本中消失,被其他功能取代。


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

sys.version給你你想要的,只需選擇第一個數字:)





version