내 스크립트를 해석하는 Python 인터프리터 버전을 어떻게 확인할 수 있습니까?
질문자 :carrier
이 정보는 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
또는 sys.hexversion
사용하십시오.
>>> sys.version_info (2, 5, 2, 'final', 0) # or >>> sys.hexversion 34014192
Python 인터프리터의 최소 버전 요구 사항으로 스크립트가 실행되도록 하려면 다음을 코드에 추가합니다.
assert sys.version_info >= (2, 5)
이것은 주 버전 정보와 부 버전 정보를 비교합니다. 원하는 대로 튜플에 마이크로(= 0
, 1
등) 및 릴리스 레벨(= 'alpha'
, 'final'
등)을 추가합니다. 그러나 특정 기능이 있는지 확인하고 그렇지 않은 경우 해결 방법(또는 구제금융)을 확인하는 것이 거의 항상 더 좋습니다. 새로운 릴리스에서 기능이 사라지고 다른 기능으로 대체되는 경우가 있습니다.
krawyoti
명령줄에서(대문자 'V' 참고):
python -V
이것은 'man python'에 문서화되어 있습니다.
IPython 콘솔에서
!python -V
jcolino
나는 이와 같은 sys.hexversion
위해 sys.hexversion을 좋아합니다.
>>> import sys >>> sys.hexversion 33883376 >>> '%x' % sys.hexversion '20504f0' >>> sys.hexversion < 0x02060000 True
brianz
stdlib에서 platform
의 python_version
을 사용하십시오.
from platform import python_version print(python_version()) # 3.9.2
Bill
최선의 방법은 아마도 다음과 같을 것입니다.
>>> 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!" >>>
Seth
다음과 같이 입력하십시오.
#!/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은 스크립트를 로드하지 못할 수도 있으므로 이 오류를 보고하기에 충분하지 않을 수 있습니다. 이 문제를 해결하려면 최신 코드로 스크립트를 가져오는 스크립트에서 위의 내용을 실행할 수 있습니다.
rjmunro
다음은 바로 종료되는 짧은 명령줄 버전입니다(스크립트 및 자동 실행에 유용).
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)
Wolph
six
모듈을 사용하면 다음과 같이 할 수 있습니다.
import six if six.PY2: # this is python2.x else: # six.PY3 # this is python3.x
Dzhuang
import sys sys.version.split(' ')[0]
sys.version은 원하는 것을 제공합니다. 첫 번째 숫자를 선택하십시오. :)
fengshaun
Seth가 말했듯이 메인 스크립트는 sys.version_info
확인할 수 있습니다(그러나 2.0까지는 나타나지 않았으므로 이전 버전을 지원하려면 sys 모듈의 다른 버전 속성을 확인해야 합니다).
그러나 파일에서 이전 Python 버전에서 사용할 수 없는 Python 언어 기능을 사용하지 않도록 주의해야 합니다. 예를 들어, 이것은 Python 2.5 이상에서 허용됩니다.
try: pass except: pass finally: pass
그러나 이전 Python 버전에서는 작동하지 않습니다. 따라서 이전 Python 버전과의 호환성을 위해 다음을 작성해야 합니다.
try: try: pass except: pass finally: pass
Heikki Toivonen
가장 간단한 방법
터미널에 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. >>>
cjahangir
여러 답변이 이미 현재 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")
normanius
재미를 위해 다음은 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")
dstromberg
Python 3 이전을 감지하고 아무 것도 가져오고 싶지 않다면...
...목록 이해 범위 변경을 (ab) 사용하고 단일 표현식 에서 수행할 수 있습니다.
is_python_3_or_above = (lambda x: [x for x in [False]] and None or x)(True)
user541686
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'
Aamir M Meman
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
oetzi
Python 버전 확인: python -V
또는 python --version
또는 apt-cache policy python
whereis python
을 실행하여 설치된 버전 수를 확인할 수도 있습니다.
Shusen Yi
sys.version_info
는 3.7부터 tuple
을 반환하지 않는 것 같습니다. 오히려, 그것은 특별한 클래스를 반환하므로 적어도 나에게는 튜플을 사용하는 모든 예제가 작동하지 않습니다. 다음은 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 이상을 실행 중인지 확인할 수 있습니다.
Parker E.
훨씬 더 간단한 방법:
Spyder에서 새 "IPython 콘솔"을 시작한 다음 기존 스크립트를 실행합니다.
이제 콘솔 창에 인쇄된 첫 번째 출력에서 버전을 볼 수 있습니다.
"Python 3.7.3(기본값, 2019년 4월 24일, 15:29:51)..."
S. Jessen
명령줄에서 확인하려면 하나의 명령으로 메이저, 마이너, 마이크로 버전, 릴리스 레벨 및 직렬 을 포함하고 스크립트에 사용하는 것과 동일한 Python 인터프리터(즉, 동일한 경로)를 호출합니다.
> path/to/your/python -c "import sys; print('{}.{}.{}-{}-{}'.format(*sys.version_info))" 3.7.6-final-0
참고: f-문자열이나 '.'.join()
.format()
을 사용하면 임의의 형식화 및 구분 문자를 사용할 수 있습니다. 예를 들어 이것을 greppable 한 단어 문자열로 만들 수 있습니다. python, numpy, pandas, sklearn, MacOS, xcode, clang, brew, conda, anaconda, gcc/g++ 등 모든 중요한 버전을 보고하는 bash 유틸리티 스크립트 안에 이것을 넣었습니다. 로깅, 복제 가능성, 문제 해결 버그 보고 등에 유용합니다. .
smci
Windows의 경우 명령 프롬프트로 이동하여 python --version 또는 python -V를 입력합니다. 당신은 그것의 버전을 얻을 것이다.
shaila
Linux에서 작업하는 경우 명령을 내리면 python
출력은 다음과 같습니다.
파이썬 2.4.3 (#1, 2009년 6월 11일, 14:09:37)
linux2의 [GCC 4.1.2 20080704(Red Hat 4.1.2-44)]
자세한 내용을 보려면 "도움말", "저작권", "크레딧" 또는 "라이센스"를 입력하십시오.
pkm
변수에서 읽기 위해 os.popen
을 사용하는 시도:
import os ver = os.popen('python -V').read().strip() print(ver)
programmer365
출처 : http:www.stackoverflow.com/questions/1093322/how-do-i-check-what-version-of-python-is-running-my-script
'etc. > StackOverFlow' 카테고리의 다른 글
PHP에서 암호 해싱에 bcrypt를 어떻게 사용합니까? (1) | 2023.04.14 |
---|---|
탭 키 == Vim에서 중괄호 뒤에 공백 4개 및 자동 들여쓰기 (0) | 2023.04.14 |
Bitmap 개체에 이미지를 로드하는 동안 이상한 OutOfMemory 문제 (0) | 2023.04.14 |
JavaScript에서 문자열을 자르시겠습니까? (0) | 2023.04.14 |
HashMap을 직접 초기화하는 방법(문자 그대로)? (0) | 2023.04.14 |