programing

스크립트를 실행하고 있는 Python 버전을 확인하려면 어떻게 해야 합니까?

procenter 2022. 10. 20. 21:46
반응형

스크립트를 실행하고 있는 Python 버전을 확인하려면 어떻게 해야 합니까?

스크립트를 실행하고 있는 Python 인터프리터의 버전을 확인하려면 어떻게 해야 합니까?

이 정보는 모듈의 문자열로 사용할 수 있습니다.

>>> 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,1및릴리스 레벨(, ))도 사용할 수 있습니다.'alpha' ,'final'을 사용법단, 특정 기능이 있는지 여부를 체크하고 없는 경우 회피책(또는 구제책)을 강구하는 것이 거의 항상 좋습니다.새로운 릴리스에서는 기능이 없어지고 다른 릴리스로 대체되는 경우가 있습니다.

명령줄(대문자 'V' 참조):

python -V

이것은 'man python'에 기록되어 있습니다.

IPython 콘솔에서

!python -V

stdlib에서 를 사용합니다.

from platform import python_version
print(python_version())

# 3.9.2

난 이런 거 좋아해.

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

가장 좋은 방법은 다음과 같습니다.

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

또한 Import는 항상 간단한 시도만으로 래핑할 수 있으므로 구문 오류를 발견할 수 있습니다.그리고 @Heikki의 지적에 따르면, 이 코드는 훨씬 더 오래된 버전의 python과 호환될 것이다.

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

예를 들어 다음과 같습니다.

#!/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은 스크립트를 로드하지 못할 수 있으므로 이 오류를 보고할 수 없습니다.이 문제를 해결하려면 보다 최신 코드를 사용하여 스크립트를 Import하는 스크립트로 위의 작업을 수행할 수 있습니다.

다음은 바로 종료되는 짧은 명령줄 버전입니다(스크립트 및 자동 실행 지원).

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)

★★★★★★★★★★★★★★★★ six과 같이할 수.

import six

if six.PY2:
  # this is python2.x
else:
  # six.PY3
  # this is python3.x
import sys
sys.version.split(' ')[0]

sys.version은 원하는 것을 제공합니다.첫 번째 숫자를 선택합니다.

말한 는 체크할 수 .sys.version_info(단, 2.0까지는 표시되지 않았기 때문에 이전 버전을 지원하려면 sys 모듈의 다른 버전 속성을 확인해야 합니다).

그러나 이전 버전의 Python에서는 사용할 수 없는 Python 언어 기능을 파일에 사용하지 않도록 주의해야 합니다.예를 들어, 이것은 Python 2.5 이상에서 허용됩니다.

try:
    pass
except:
    pass
finally:
    pass

이전 버전의 Python에서는 사용할 수 없습니다. OR을 제외한 다른 버전에서는 사용할 수 없기 때문입니다.따라서 이전 Python 버전과의 호환성을 위해 다음을 작성해야 합니다.

try:
    try:
        pass
    except:
        pass
finally:
    pass

이미 여러 답변에서 현재 python 버전을 쿼리하는 방법을 제안하고 있습니다.버전 요건을 프로그래밍 방식으로 확인하려면 다음 두 가지 방법 중 하나를 사용합니다.

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

CPython 1.0~3.7b2, Pypy, Jython 및 Microphython에서 실행하는 방법은 다음과 같습니다.이것은 현대 코드로 하는 방법이라기보다 호기심에 가깝다.http://stromberg.dnsalias.org/ ~ strombrg / scriptons / ~ which it it it it 。이것은 여러 버전의 파이썬에서 코드 조각을 동시에 테스트하는 스크립트입니다.그래서 어떤 파이썬 기능이 어떤 버전의 파이썬과 호환되는지 쉽게 알 수 있습니다.

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

Python 3 이전 버전을 탐지하고 아무 것도 가져오지 않으려면...

...목록 이해 범위 변경은 단일 표현으로(남용) 실행할 수 있습니다.

is_python_3_or_above = (lambda x: [x for x in [False]] and None or x)(True)
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

가장 간단한 방법

단말기에 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.
>>> 

sys.version_info것 요.tuple오히려 특수 클래스를 반환하기 때문에 튜플을 사용하는 예제는 모두 작동하지 않습니다.비단뱀

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

Python 3.5 이상을 실행하고 있는지 여부를 확인할 수 있습니다.

Python 전 python :python -V ★★★★★★★★★★★★★★★★★」python --version ★★★★★★★★★★★★★★★★★」apt-cache policy python

도 할 수 요.whereis python몇 개의 버전이 설치되어 있는지 확인합니다.

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'

은 단지 반환될 뿐이다.2.7,3.6 ★★★★★★★★★★★★★★★★★」3.9

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

평소에는 그게 필요한...

보다 심플한 방법은 다음과 같습니다.

Spyder에서 새로운 "를 시작합니다.IPython Console"을 클릭하여 기존 스크립트를 실행합니다.

콘솔 창에 인쇄된 첫 번째 출력에 버전이 표시됩니다.

"Python 3.7.3 (디폴트, 2019년 4월 24일, 15:29:51)..."

여기에 이미지 설명 입력

명령줄에서 단일 명령으로 검사하지만 줄자, 마이너, 마이크로 버전, 릴리스 레벨직렬을 포함하려면 스크립트에 사용하는 것과 동일한 Python 인터프리터(즉, 동일한 경로)를 호출합니다.

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

3.7.6-final-0

주의:.format()f-param이나 f-param 대신'.'.join()에서는 임의의 포맷과 구분 문자를 사용할 수 있습니다.예를 들어, 이 문자를 greppable한1단어 문자열로 만들 수 있습니다.python, numpy, panda, sklearn, MacOS, xcode, clang, brew, conda, anaconda, gcc/g++ 등 모든 중요한 버전을 보고하는 bash 유틸리티 스크립트에 넣었습니다.로깅, 리플리케이터빌리티, 버그 리포트 트러블 슈팅 등에 도움이 됩니다.

Linux에서 작업하는 경우 명령어만 주세요.python출력은 다음과 같습니다.

Python 2.4.3 (#1, 2009년 6월 11일, 14:09:37)

[GCC 4.1.2 20080704 (Red Hat 4.1.2-44)] (Linux2 상)

자세한 내용을 보려면 "help", "copyright", "credits" 또는 "license"를 입력하십시오.

Windows의 경우 명령 프롬프트로 이동하고 다음 명령을 입력하여 python 버전을 가져옵니다.

python --version

또는

python -V

를 사용한 시도os.popen변수에서 읽으려면:

import os
ver = os.popen('python -V').read().strip()
print(ver)

언급URL : https://stackoverflow.com/questions/1093322/how-do-i-check-which-version-of-python-is-running-my-script

반응형