現在、Pythonは主に2系と3系という2つの系列が使われている。公式にはPython 3系を採用することが推奨されており、Python 2系は2019年いっぱいでサポートの終了が予定されている。しかし、Python 2系の人気は根強く、依然として多くの場面で使われている。

Stack Overflowは11月14日(米国時間)、「Why is the Migration to Python 3 Taking So Long?」において、Python 2系から3系への移行がなかなか進まないことに対する考察を公開した。

  • バージョン別PyPIパッケージダウンロード数推移グラフ - 資料: Stack Overflow提供

    バージョン別PyPIパッケージダウンロード数推移グラフ - 資料: Stack Overflow

Stack OverflowはまずPython 2からPython 3へバージョンが推移することになった理由を説明。Unicodeスタンダードの最初のボリュームが公開される前に開発されたPython 2は、文字列としてUnicodeを想定していない。Python 3の最初の主要な目的はUnicodeをベースにすることだった。Python 3の開発チームはすぐに移行が行われると考えていたが、思ったように移行は進まなかったという。記事ではこうした状況を特徴づける次のような説明を掲載している。

  • 開発チームはPython 3への迅速な移行を想定していたが、Python 3はPython 2との互換性がなく、しかもPython 3はPython 2の緩やかな改善にすぎなかった。さらに、多くのユーザーがこのバージョンを不便だと感じたことで、思った以上に移行が進まなかった。特にprintステートメントの変更は多くのユーザーに移行阻害の要因を与えた
  • Python 3系の普及の発端となったのは行乗算、非同期IO、OrderedDictの速度向上、型ヒント実装などが取り込まれたPython 3.5。このバージョン以降はPython 3系への移行が比較的行われるようになった
  • Python 2のサポート終了が目前に近づいているものの、企業は依然としてPython 2を使用している。企業内でPython 2からPython 3へ移行するにはかなりの労力が必要になる

Stack Overflowはそもそもこうした技術の移行には極めて長い時間がかかると指摘。コードベースの移行は長期間かかるとし、技術的な優位性だけでは移行が進まないことを説明している。移行には政治的な決定も必要になる事例を取り上げて紹介している。

セキュリティの観点から考えると、サポートが終了したPython 2を使い続けることにはリスクがあるが、Stack Overflowは今後もPython 2が使われることになる事態を示唆している。