5. future モジュール

future モジュール[1] , python2/python3の双方で動作するスクリプトの開発を支援するためのモジュールです。 このモジュールのホームページEasy, clean, reliable Python 2/3 compatibility には次の様に記述されています。

ホームページの記述

python-future is the missing compatibility layer between Python 2 and Python 3. It allows you to use a single, clean Python 3.x-compatible codebase to support both Python 2 and Python 3 with minimal overhead.


python-futureは Python2 と Python3 の間にかけている互換性レイヤを提供します。このモジュールを使うことによって、Python2とPython3の双方で最小のオーバーヘッドで実行可能なpythonプログラムをサポートする、単一の綺麗な, Python3互換のプログラムの基盤を手に入れます。

futureモジュールのホームページジEasy, clean, reliable Python 2/3 compatibility はpython2/python3で共通に動作するプログラムを書くために役に立つpython2/pytho3の違いを Cheat Sheet にまとめています。これらの違いのうち多くは2to3スクリプトで適切に処理されます。

5.1. インストール

futureモジュールはpipを使って簡単にインストールすることができます。

python2 -m pip install future

RH, SL, CentOSなどのOSではyumを使ってインストールすることも可能です。

yum install python2-future

5.2. futurize

futurizeは futureモジュールと一緒にインストールされるコマンドツールです。 future moduleを使ったシェルレベルのコマンドです。 python2向けに書かれたスクリプトを、python2/3の双方で利用可能に書き換えることを サポートしてくれます。 futurizeコマンドは

  • python2のスクリプトを"modern"な スクリプト に変換する stage1(-1/--staget1) と

  • future モジュールなどを使って、python2/python3の双方に対応可能なスクリプトに変換するstage2(-2/--stage2)

のふたつのステージがあります。デフォルトでは、このふたつのステージを連続して行います(-0/--both-stagge)。 futurize コマンドは内部で2to3のライブラリを利用しています。

5.3. pasteurize

pasturize は, futurerizeとは逆に、python3のスクリプト を python3/2両用のスクリプト に変換します。 futurize と同様に future moduleを利用しています。

3to2というモジュールも存在しますが, 2015年4月16日のバージョンで更新が止まっている様子です。

futureモジュールの最新版は 0.18.3で Jan. 13, 2023 に更新されています(。 Python2の現在のVersionは 2.7.18(Rel. April 20,2020) ですから、ほぼ最新版のPython2に対応していると思って良い様です。

脚注