ProgramingTip

내 펼쳐를 실행중인 Python 버전을 어떻게 확인합니까?

bestdevel 2020. 9. 27. 13:18
반응형

내 펼쳐를 실행중인 Python 버전을 어떻게 확인합니까?


내 어디에서 해석하는 Python Interpreter의 버전을 어떻게 확인할 수 있습니까?


이 정보는 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, 1등), 심지어 releaselevel (= 'alpha', 'final'당신 같은 튜플, 등). 거의 항상 특정 기능이 있는지 확인하고있는 경우 해결 방법 (또는 구제 조치)을 "오리"하는 것이 좋습니다. 새로운 릴리스에서 기능이 사라지고 다른 기능으로 대체되는 경우가 있습니다.


명령 줄에서 (대문자 'V'참고) :

python -V

이 'man python'에 문서화되어 있습니다.


나는 이와 같은 sys.hexversion것을 좋아합니다.

http://docs.python.org/library/sys.html#sys.hexversion

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

또한 간단한 시도로 가져 오기를 항상 래핑 할 수 있으므로 구문 오류를 확인해야합니다. 그리고 @Heikki의 요점에 따르면 코드는 훨씬 이전 버전의 표준과 호환됩니다.

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

사용 platformpython_version 다음 stdlib에서 :

>>> from platform import python_version
>>> print(python_version())
2.7.8

다음과 같이 입력하십시오.

#!/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은 펼쳐를로드하지 않을 수도 있으므로이 오류를보고 할만 큼 충분하지 않습니다. 해결 방법으로 최신 코드로 화면을 가져옵니다.


다음은 즉시 종료되는 짧은 명령 줄 버전입니다 (서비스 및 자동 실행에 편리함).

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은 원하는 것을 제공합니다. 첫 번째 숫자 만 선택하면됩니다. :)


Seth가 말했듯이 메인 화면은 확인할 수 있습니다 sys.version_info(하지만 2.0 가상 현실 버전을 지원하는 시스템 모듈의 다른 버전 속성을 확인해야합니다).

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

try:
    pass
except:
    pass
finally:
    pass

그러나 이전 파이썬 버전에서는 작동하지 않습니다. 따라서 이전 Python 버전과의 환경을 위해 다음을 작성해야합니다.

try:
    try:
        pass
    except:
        pass
finally:
    pass

가장 간단한 방법

터미널에 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.
>>> 

몇 가지 답변은 이미 현재 파이썬 버전 쿼리 하는 방법을 제안합니다 . 프로그래밍 방식으로 버전 요구 사항 확인 하려면 다음 두 가지 방법 중 하나를 사용합니다.

# 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 및 Micropython에서 수행하는 방법입니다. 이것은 현대 코드에서 수행하는 방법보다 더 궁금합니다. http://stromberg.dnsalias.org/~strombrg/pythons/의 일부로 작성했습니다. 이 스크립트는 여러 버전의 파이썬에서 한 번에 코드 스 니펫을 테스트하기위한 스크립트이므로 쉽게 파이썬에 대한 느낌을 얻을 수 있습니다. 기능은 어떤 버전의 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")

Python 버전 확인 : python -V또는 python --version또는apt-cache policy python

실행 whereis python하여 설치된 버전 수를 확인할 수도 있습니다 .


sys.version_infotuple3.7에서 a를 반환하지 않는 것 같습니다 . 오히려 특별한 클래스를 반환하므로 튜플을 사용하는 모든 예제가 적어도 저에게는 작동하지 않습니다. 다음은 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)

Python 3.5 이상을 실행 중인지 확인할 수 있습니다.


Python 3 이전 버전을 감지하고 아무것도 가져 오지 않으려는 경우 ...

... 목록 이해 범위 변경을 (남용) 사용하고 단일 표현식으로 수행 할 수 있습니다 .

is_python_3_or_above = (lambda x: [x for x in [False]] and None or x)(True)

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'

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

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

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

참고 URL : https://stackoverflow.com/questions/1093322/how-do-i-check-what-version-of-python-is-running-my-script

반응형