Python2か3か問題

Pythonを始めたばかりの人が悩むのが、Python2とPython3のどちらを使えば良いのかという点だった。そんな状況が変わるかもしれない。2018年3月1日よりmacOSのパッケージマネージャーのHomebrewでPythonのデフォルトバージョンがPython3へ変更になったのだ。これにより、Python2から3への移行がぐっと進む。

全くPythonを知らない方のために、今回の『Python2か3か問題』について簡単に紹介しよう。まず、この問題を確認するために、PythonのWebサイトへアクセスしてみよう。そして、インストーラーをダウンロードしようとすると、原稿執筆時点では、Python2とPython3のどちらをダウンロードするのか選択を迫られることになる。つまり、Pythonを始める以前に、どちらをインストールするべきなのか、調査を行うところから始めなくてはならない。ここで間違った選択をすると、その後のPython人生で少し遅れを取ることになる。

Pythonの公式Webサイト - Python2/3を選んでダウンロードするようになっている

なぜ、そんな紛らわしい状況になっているのだろうか。事の発端は、Python2から3へのメジャーバージョンアップの際に、文法や標準ライブラリに変更が加えられ、互換性が失われたことにある。もちろん、文法にそれほど大きな違いはないのだが、文字列の扱いや例外処理の記述方法などが変更になった。それで、一部のライブラリは、Python3へ対応せず、Python2にしか対応しなかった。また、既に多くのシステムで、Python2がデフォルトでインストールされており、多くのアプリやライブラリが、Python2に依存した状態で開発されていた。例えば、開発者の多くが利用しているmacOSでも、依然としてPython3ではなくPython2がデフォルトでインストールされており、それに多くのアプリやライブラリが依存している。そうしたことが理由となり、Python3への移行は緩やかなものとなったのだ。それで、Pythonの公式サイトでも、2と3の両方をメジャーバージョンとして提供しているのだ。

もちろん、これからPythonを始めようという人は、新しいバージョンのPython3を選ぶのが正しい選択だ。そのため、本連載でも、Python3を対象にしたプログラムを紹介している。基本的に、Python2は旧バージョンなのだ。今後のPythonプロジェクトでは、Python3のみに対応し、次第にPython2に対応していないものが増えていくだろう。

しかし、そんな状況が変わるかもしれない。というのは、この3月1日(日本では3月2日)より、macOSで最も利用されているパッケージマネージャーのHomebrewで、Python3がPythonのデフォルトになったのだ。これまで、Homebrewでpythonを指定してインストールすると、Python2がインストールされていたのだが、今後は、Python3がインストールされることになる。

なぜ、これが大きな変更なのかと言うと、この変更に伴って、Pythonに依存している様々なアプリでPython3が利用されるようになるからだ。Pythonはテキストエディタのvimをはじめ、様々なアプリやライブラリで利用されている。そのため、Pythonを使うプロジェクトでは、Python3対応を迫られる。その結果、Python2から3への移行に拍車がかかるだろう。

Python2と3を見分ける方法

ところで、自分の利用しているPythonのバージョンを確認するには、どうしたら良いだろうか。コマンドラインから以下のように入力してみよう。コマンドラインとは、WindowsならコマンドプロンプトかPowerShell、macOSならターミナル.appだ。

$ python --version

すると、『Python 2.7.xx』や『Python 3.x.xx』(xはバージョン番号)が表示される。

また、Webで公開されているプログラムであれば、プログラムを確認すると、2なのか3なのかを類推できる。例えば、Python2と3では標準出力を行うprintの使い方が異なる。Python3では、printが組み込み構文ではなく関数となっているために、print("...")のように書かなくてはならない。

# Python2 print "あいうえお" # Python3 print("あいうえお")

また、Python2のプログラムでは、文字コードの指示なしに、非ASCII文字を記述することができない。そのため、文字コードを指定する以下のようなコードが入っている場合は、Python2用のプログラムである可能性が高くなる。（もちろん、Python3のプログラムでも、以下のコードを記述できるので、書かれているからPython2用とは言えないが可能性は高くなる。）

# -*- coding: utf-8 -*-

macOSでPython3をデフォルトにしよう

なお、macOSで、自分の普段使っているPythonが2だった場合、2018年3月1日(日本時間では2日)以降、Homebrewを使って、以下のように指示すると、Python3をデフォルトのPythonに変更できる。

$ brew update $ brew upgrade python

その逆で、Python2が必要な場合は、以下のように記述するようになる。

brew install python@2

まとめ

これから、Pythonを始めるならPython3という流れは、数年前からあったが、既に、Python2を選ぶ理由は少なくなってきたと言える。もちろん、既に、本連載の1回目から読んでいる読者の皆さんは、Python3をインストールしていることと思う。もし、Python2を使っていたなら、この機会にPython3をインストールしておくと良いだろう。