2to3 で Python2 コードを Python3 コードへ変換する

2to3 を使うと Python2 ベースのコードを Python3 へ変換することが出来ます。 とは言え、2to3 も万能なわけではありませんので、2to3 が修正してくれなかった部分は手動で修正していく必要があります。 2to3 は pip でインストールすることが出来ます。

1
python3 -m pip install 2to3

以下の Python2 ベースのコードがあったとします。

1
print "Hello, World!"

Python2 → Python3 へ変換するには以下のように実行します。 但し、この場合は ファイルの内容は書き換えられません

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
$ 2to3 sample.py
RefactoringTool: Skipping optional fixer: buffer
RefactoringTool: Skipping optional fixer: idioms
RefactoringTool: Skipping optional fixer: set_literal
RefactoringTool: Skipping optional fixer: ws_comma
RefactoringTool: Refactored sample.py
--- sample.py (original)
+++ sample.py (refactored)
@@ -1 +1 @@
-print "Hello, World!"
+print("Hello, World!")
RefactoringTool: Files that need to be modified:
RefactoringTool: sample.py

ファイルの内容を書き換えるには -w オプションを指定します。 デフォルトではバックアップファイルが作成されてしまう為、必要に応じて --nobackups オプションを指定し、バックアップを作成しないようにします。

1
2to3 -w --nobackups sample.py

これで Python2 ベースだったコードが以下のように Python3 ベースに書き換えられました。

1
print("Hello, World!")