2009-10-07 8 views
8

今日私はpyPdf 1.12を使用してみましたが、私が書いていたスクリプトではPython 2.6のターゲットです。私のスクリプトを実行してpyP​​dfをインポートしても、廃止予定の機能(md5-> hashsum、sets)に関する苦情を受け取ります。私は2.6でこの作業をきちんとするためのパッチを提供したいと思いますが、著者は古いバージョン(2.5以前)との互換性を壊さないことを望んでいます。コード内での複数のPythonバージョンのサポート

Googleとスタックオーバーフローを検索しても、これまで何も表示されていません。似たようなことを達成する前に、import文の周りにブロックを除いて試してみたみたいですが、例は見つけられません。複数の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 

イテレータreversedが利用可能で、彼らはそれを使用します。それ以外の場合は、utilsパッケージから独自の実装をインポートします。


(2)明示的にPythonインタプリタのバージョンを比較:

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)警告を無効にすることができます。これは本当にデフォルトにする必要があります(新しいPythonにあります)。

関連する問題