2009-10-07 5 views
8

오늘 필자가 작성한 스크립트에서 pyPdf 1.12를 사용하여 파이썬 2.6을 대상으로했습니다. 내 스크립트를 실행하고 pyPdf를 가져 오더라도 deprecated 기능 (md5-> hashsum, sets)에 대한 불만이 나타납니다. 나는 2.6에서이 작업을 깔끔하게하기 위해 패치를 제공하고 싶지만, 필자는 구 버전 (2.5 이전 버전)에 대한 호환성을 깨고 싶지 않다고 생각한다.코드에서 여러 개의 Python 버전 지원?

Google 및 스택 오버플로를 검색하는 데는 아무런 성과가 없습니다. 나는 비슷한 것을 완성하기 전에 import 문을 둘러싼 블럭을 제외하고 try/except 블록을 본 것처럼 느낀다. 그러나 어떤 예제도 찾을 수 없다. 여러 Python 버전을 지원하기 위해 일반적으로 허용되는 최상의 방법이 있습니까?

답변

10

이 작업을 수행하는 방법은 두 가지가 있습니다 :


(1) 설명 것처럼 : 예외 주위에 뭔가 일을보십시오 이전 버전의 경우. 이 실패 할 경우 예를 들어, json 모듈을 가져오고 유저 랜드 구현을 가져올 수 :

try: 
    reversed 
except NameError: 
    from django.utils.itercompat import reversed  # Python 2.3 fallback 

경우] :이 장고에서 예 (그들은 종종이 방법을 사용)이다

try: 
    import json 
except ImportError: 
    import myutils.myjson as json 

iterator reversed을 사용할 수 있습니다. 그렇지 않은 경우 패키지는 utils 패키지에서 자체 구현을 가져옵니다.


(2) 명시 적으로 파이썬 인터프리터의 버전을 비교 :

import sys 
if sys.version_info < (2, 6, 0): 
    # Do stuff for old version... 
else: 
    # Do 2.6+ stuff 

sys.version_info 쉽게 유사한 버전 튜플과 비교 될 수있는 튜플이다.

0

여기에서 지원되는 Python 의 여러 버전은입니다. a) 약간의 작업이 필요한 새 버전을 조건부로 사용하거나 b) 기본값을 사용해야하는 경고를 해제 할 수 있습니다 (새로운 Pythons에 있음).

관련 문제