What's New In Python 3.0から:
Python 2.6 と 3.0 の両方で変更されずに実行されるソース コードを作成しようとすることはお勧めできません。たとえば、print ステートメントやメタクラスなどを避けるなど、非常にゆがんだコーディング スタイルを使用する必要があります。Python 2.6 と Python 3.0 の両方をサポートする必要があるライブラリを維持している場合、最適な方法は、ソース コードの 3.0 バージョンを編集するのではなく、ソース コードの 2.6 バージョンを編集して 2to3 トランスレータを再度実行することにより、上記の手順 3 を変更することです。ソースコード。
3.0 の主要な新機能と変更点のほとんどもリストされているため、そこにあるリンクはかなり良いものです。
あなたの質問に関しては、あなたが求めているものに最も近いものはSixです。これはコンバーターやフィクサーではなく、多くのゆがんだコーディングを処理する互換性ライブラリです。とは言っても、それがどれだけうまく機能するかはわかりません。とにかくそれを利用するには、既存のコードに多くの変更を加える必要があります。
主な問題は、Python 3.x が構文の多くの基本的な側面を変更したため、何らかの互換性レイヤーがなければ、同じコードが 3.x と 2.x の両方で同じように機能することはほとんど不可能であるということです。Python 2 の文字列は、Python 3 の文字列と同じではありません。同じことが整数にも当てはまり、Python 3 にはもはや long 型さえありません (Python 3 の int は以前の long であり、古い Python 2 の int はなくなりました)。多くの組み込み関数と属性が名前変更または変更され、構文のほとんどが変更またはクリーンアップされて、後方互換性が完全に失われました。
2to3 を使用してコードを Python 3 に移植するでは、2to3 とその機能について少し説明します。記載されている膨大な量の構文変更は、結果として得られるコードが Python 2.x で機能しなくなる理由を説明するのに十分であることを願っています。