Python3系で書いたソースコードを2系の環境でも動かせるようにする

Python, Programming09 November 2020

Python3系として書いたソースコードを、何らかの要因で2系で使用したくなった時の修正方法。

特に企業で使用しているPythonのバージョンが2系で容易にアップデートが出来ない時などに使えると思います。

モジュール3to2を使用する

Pythonが提供するモジュール3to2を使用します。

ちなみに2to3というのもあります。(2系から3系への変換はこっちを使う)

インストールと使い方

基本的にpipでインストールするだけです。

$ pip install 3to2

$ 3to2 -w 変換したいファイル名(.py)

# *も使えるのでモジュール配下一括とかもできる
$ 3to2 -w module/*

これだけで変換されます。正規表現でのファイル指定も可能となってます。

-wオプションについて 変換したいファイル(.py)をバックアップとして、変換したいファイル.py(.bak)という名前で残しつつ、変換できる。

ちなみに、オプションなしで実行すると変換後のソースが標準出力(print)されるだけになります。

一度こちらで確認をするのも良いかもしれません。

使用例

簡単な使用例は以下のような感じです。

$ ls
app.py

$ 3to2 -w app.py

$ls
app.py app.py.bak

完全にこのままで動くわけではなく多少の手直しは必要ですが、たったこれだけで面倒な書き換えを9割方しなくて済みます。

そもそも2系の環境をアップデートするのが正しいのは間違いありません。

どうしても2系を使わないといけない!といった時に参考にしてみてください。