1387

スクリプトを解釈しているPythonインタープリターのバージョンを確認するにはどうすればよいですか?

4

24 に答える 24

1585

この情報は、モジュールの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またはを使用しsys.hexversionます。

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

Pythonインタープリターの最小バージョン要件でスクリプトが実行されるようにするには、これをコードに追加します。

assert sys.version_info >= (2, 5)

これにより、メジャーバージョン情報とマイナーバージョン情報が比較されます。必要に応じて、マイクロ(= 01など)およびリリースレベル(= 'alpha''final'など)をタプルに追加します。ただし、ほとんどの場合、特定の機能が存在するかどうかを「ダック」チェックし、存在しない場合は回避策(またはベイルアウト)を行う方がよいことに注意してください。新しいリリースでは機能がなくなり、他の機能に置き換えられることがあります。

于 2009-07-07T16:20:12.490 に答える
415

コマンドラインから(大文字の「V」に注意):

python -V

これは「manpython」で文書化されています。

IPythonコンソールから

!python -V
于 2013-07-22T19:50:40.250 に答える
99

私はこのようなsys.hexversionものが好きです。

>>> import sys
>>> sys.hexversion
33883376
>>> '%x' % sys.hexversion
'20504f0'
>>> sys.hexversion < 0x02060000
True
于 2010-06-10T20:08:35.203 に答える
93

stdlibからのplatformpython_version使用します。

from platform import python_version
print(python_version())

# 3.9.2
于 2014-08-25T01:11:33.110 に答える
70

あなたの最善の策はおそらくそのようなものです:

>>> 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!"
>>>
于 2010-06-10T16:06:05.513 に答える
49

次のようなものを入れてください:

#!/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でスクリプトを読み込めない場合があるため、このエラーを報告するのに十分な距離が得られないことに注意してください。回避策として、より新しいコードでスクリプトをインポートするスクリプトで上記を実行できます。

于 2010-06-10T16:08:54.310 に答える
31

すぐに終了する短いコマンドラインバージョンを次に示します(スクリプトと自動実行に便利です)。

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

または、メジャー、マイナー、マイクロのみ:

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)
于 2014-09-02T20:02:50.270 に答える
14

モジュールを使用sixすると、次の方法で実行できます。

import six

if six.PY2:
  # this is python2.x
else:
  # six.PY3
  # this is python3.x
于 2017-10-20T02:36:31.483 に答える
8
import sys
sys.version.split(' ')[0]

sys.versionはあなたが望むものを提供します、ただ最初の番号を選んでください:)

于 2009-07-07T16:20:59.010 に答える
5

Sethが言ったように、メインスクリプトはチェックできますsys.version_info(ただし、2.0まで表示されなかったため、古いバージョンをサポートする場合は、sysモジュールの別のバージョンプロパティをチェックする必要があります)。

ただし、古いバージョンのPythonでは使用できないファイル内のPython言語機能を使用しないように注意する必要があります。たとえば、これはPython2.5以降で許可されています。

try:
    pass
except:
    pass
finally:
    pass

ただし、古いPythonバージョンでは機能しません。これは、ORを除いて、最終的にtryに一致することしかできないためです。したがって、古いPythonバージョンとの互換性のために、次のように記述する必要があります。

try:
    try:
        pass
    except:
        pass
finally:
    pass
于 2010-06-10T16:12:50.820 に答える
3

いくつかの回答は、現在のPythonバージョンを照会する方法をすでに示唆しています。プログラムでバージョン要件を確認するには、次の2つの方法のいずれかを使用します。

# 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")
于 2017-11-16T02:25:11.783 に答える
3

楽しみのために、以下は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")
于 2018-03-16T01:05:19.157 に答える
3

Python 3より前のバージョンを検出し、何もインポートしたくない場合...

...リスト内包表記の変更を(乱用)使用して、単一の式で実行できます:

is_python_3_or_above = (lambda x: [x for x in [False]] and None or x)(True)
于 2018-10-15T23:01:05.687 に答える
3
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}")

出力

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
于 2019-09-23T15:24:11.297 に答える
2

最も簡単な方法

ターミナルに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.
>>> 
于 2016-02-09T14:11:24.197 に答える
1

Pythonのバージョンを確認してください:python -Vまたはpython --versionまたはapt-cache policy python

実行whereis pythonして、インストールされているバージョンの数を確認することもできます。

于 2018-04-11T02:01:11.277 に答える
1

sys.version_infotuple3.7の時点ではを返さないようです。むしろ、それは特別なクラスを返すので、少なくとも私にとっては、タプルを使用したすべての例が機能するわけではありません。Pythonコンソールからの出力は次のとおりです。

>>> import sys
>>> type(sys.version_info)
<class 'sys.version_info'>

sys.version_info.majorとの組み合わせを使用するだけでsys.version_info.minor十分であることがわかりました。例えば、...

import sys
if sys.version_info.major > 3:
    print('Upgrade to Python 3')
    exit(1)

Python 3を実行しているかどうかを確認します。さらに具体的なバージョンを確認するには、...

import sys
ver = sys.version_info
if ver.major > 2:
    if ver.major == 3 and ver.minor <= 4:
        print('Upgrade to Python 3.5')
        exit(1)

少なくともPython3.5を実行しているかどうかを確認できます。

于 2018-10-06T11:38:48.953 に答える
1

WindowsでコマンドのPythonバージョンを確認するには、コマンドプロンプトで次のコマンドを実行し、出力を確認します

c:\>python -V
Python 2.7.16

c:\>py -2 -V
Python 2.7.16

c:\>py -3 -V
Python 3.7.3

また、各Pythonバージョンのフォルダー構成を確認するには、次のコマンドを実行します。

For Python 2,'py -2 -m site'
For Python 3,'py -3 -m site'
于 2019-04-02T17:13:06.287 に答える
0

さらに簡単な方法:

Spyderで、新しい「IPython Console」を起動してから、既存のスクリプトを実行します。

これで、コンソールウィンドウに出力された最初の出力にバージョンが表示されます。

「Python3.7.3(デフォルト、2019年4月24日、15:29:51)...」

ここに画像の説明を入力してください

于 2020-05-04T06:46:52.520 に答える
0

コマンドラインから1つのコマンドで確認するには、メジャー、マイナー、マイクロバージョン、リリースレベル、シリアルを含めてから、スクリプトに使用しているものと同じPythonインタープリター(つまり同じパス)を呼び出します。

> path/to/your/python -c "import sys; print('{}.{}.{}-{}-{}'.format(*sys.version_info))"

3.7.6-final-0

注:.format()f文字列の代わりに、または'.'.join()任意の書式設定と区切り文字を使用できるようにします。たとえば、これをgreppable1単語の文字列にします。これを、すべての重要なバージョンを報告するbashユーティリティスクリプト内に配置します:python、numpy、pandas、sklearn、MacOS、xcode、clang、brew、conda、anaconda、gcc / g ++など。ロギング、複製可能性、バグレポートのトラブルシューティングなどに役立ちます。

于 2020-05-24T22:00:22.657 に答える
0

Windowsの場合、コマンドプロンプトに移動し、次のコマンドを入力してPythonバージョンを取得します。

python --version

または

python -V
于 2021-09-17T15:21:31.977 に答える
0

2.7これは、、3.6またはを返すだけです3.9

import sys
current_version = ".".join(map(str, sys.version_info[0:2]))

これはあなたが通常必要とするものです...

于 2022-01-18T15:49:06.490 に答える
-1

Linuxで作業している場合は、コマンドpython 出力を与えるだけで次のようになります

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

linux2の[GCC4.1.220080704(Red Hat 4.1.2-44)]

詳細については、「help」、「copyright」、「credits」、または「license」と入力してください。

于 2013-07-16T09:10:48.733 に答える
-2

os.popen変数でそれを読み取るために使用する試み:

import os
ver = os.popen('python -V').read().strip()
print(ver)
于 2020-10-19T09:49:42.360 に答える