この回答は更新されていないことに注意してください。http://python-notes.curiousefficiency.org/en/latest/python3/questions_and_answers.htmlの個人サイトでPython 3のQ&Aがはるかに長くなっています
前の答え:
(2012年9月の状況更新)
私たち(Pythonコア開発者)は、Python 3.0がリリースされたとき、3.xが2.xシリーズの新しいプロジェクトの「デフォルト」の選択肢になるまでに約5年かかると予測していました。この予測が、2.7リリースの予定されているメンテナンス期間が非常に長い理由です。
また、元のPython 3.0リリースにはIOパフォーマンスが低いという重大な問題があり、ほとんどの実用的な目的には効果的に使用できなかったため、2009年6月下旬のPython 3.1のリリースからタイムラインを開始する方が理にかなっています。 IOパフォーマンスの問題は、3.0.zメンテナンスリリースがない理由でもあります。3.1へのアップグレードよりも3.0に固執したい理由はありません)。
執筆時点(2012年9月)で、これは現在移行プロセスに3年以上かかっていることを意味し、その予測はまだ順調に進んでいるようです。
Python 3コードを入力する人はprint
、関数になるなどの構文の変更に最も頻繁に噛まれますが、自動2to3
変換ツールがそれを非常に喜んで処理するため、実際にはライブラリの移植の面倒ではありません。
実際の最大の問題は、実際にはセマンティックの問題です。Python3では、Python 2のようにテキストエンコーディングを高速かつゆるく遊ばせません。これは、Python 2に対する最大の利点であると同時に、移植に対する最大の障壁でもあります。Unicode処理の問題を修正して、ポートを正しく動作させる必要があります(一方、2.xでは、そのコードの多くは、非ASCII入力。特に非ASCIIデータが一般的でない環境で動作する印象を与えます。
Python 3.0および3.1の標準ライブラリでさえ、Unicodeの処理に問題があり、多くのライブラリ(特にWebサービスに関連するライブラリ)を移植することは困難です。
3.2は、これらの問題の多くに対処し、Djangoのようなライブラリとフレームワークのはるかに優れたターゲットを提供しました。3.2 wsgiref
は、3.x の最初の作業バージョン(Pythonで記述されたWebサーバーとWebアプリケーション間の通信に使用される主な標準)ももたらしました。これはWebスペースでの採用に必要な前提条件でした。
numpyのとscipyのダウンロードなどの主要な依存関係は、今のように、インストールや依存関係の管理ツールを移植されているzc.buildout
、pip
とvirtualenv
3.xのために利用できる、ピラミッド1.3のリリースは、Python 3.2をサポートし、今後のDjangoの1.5リリースでは、実験的なPythonの3のサポートを含み、そして12.0リリースTwistedネットワーキングフレームワークは、Python 3互換バージョンを作成するための道を開くために、Python 2.5のサポートを廃止しました。
Python 3互換性ライブラリとフレームワークの進歩に加えて、人気のあるJITコンパイルされたPyPyインタープリター実装は、Python 3サポートに積極的に取り組んでいます。
移行プロセスを管理するツールも大幅に改善されました。加えて、2to3
(今2.xシリーズのサポートを維持する必要がないアプリケーションのワンタイム変換に最適と考えられている)はCPythonの一部として提供されるツールもありますpython-modernize
使用する、2to3
ターゲットとするインフラストラクチャをPython 2およびPython 3の(大)共通サブセット。このツールは、six
互換性ライブラリを使用して、Python 2.6+とPython 3.2+の両方で実行される単一のコードベースを作成します。Python 3.3リリースは、既存のUnicode対応アプリケーションを移行する際の「ノイズ」の1つの主な原因も排除します。Python3.3は、文字列リテラルの「u」プレフィックスを再度サポートします(実際にはそうしません)Python 3のすべて-Python 2でテキストとバイナリリテラルを既に正しく区別していたユーザーがPython 3への移行をうっかり難しくするのを避けるために復元されただけです。
したがって、私たちは実際に物事がどのように進行しているかにかなり満足しています-元の時間枠に進むにはまだ2年近くあり、変更はPythonエコシステム全体にうまく波及しています。
多くのプロジェクトがPython Package Indexメタデータを適切にキュレートしておらず、あまりアクティブでないメンテナーを持つプロジェクトがPython 3サポートを追加するために分岐されているため、純粋に自動化されたPyPIスキャナーは依然としてPython 3ライブラリの状態を過度に否定的に表示しますサポート。
PyPIでのPython 3サポートのレベルに関する情報を取得するための推奨される代替手段は、http: //py3ksupport.appspot.com/です。
このリストは、不正確なプロジェクトメタデータ、ソース管理ツールにあるが公式リリースにはないPython 3サポート、および最新のフォークを持つプロジェクトを考慮して、Brett Cannon(長年のPythonコア開発者)によって個人的にキュレーションされていますまたはPython 3をサポートする代替物。多くの場合、Python 3でまだ利用できないライブラリに重要な依存関係が欠けているか、他のプロジェクトでPython 3がサポートされていないためユーザーの需要が少なくなります(たとえば、コアDjangoフレームワークがPython 3、Southやdjango-celeryなどの関連ツールは、Python 3サポートを追加する可能性が高く、Pyramid と Djangoの両方でPython 3サポートが利用可能になると、Python 3サポートがgeventなどの他のツールに実装される可能性が高くなります)。
http://getpython3.com/のサイトには、Python 3の書籍やその他のリソースへの優れたリンクが含まれており、既にPython 3をサポートしている主要なライブラリとフレームワークを特定し、開発者が資金援助を求める方法に関する情報も提供しています主要プロジェクトのPython 3への移植におけるPSF。
別の優れたリソースは、新しいプロジェクトにPythonバージョンを選択する際に考慮すべき要因に関するコミュニティwikiページです:http : //wiki.python.org/moin/Python2orPython3