multiplus

気まぐれに書評とか。

Mac OS XでPython2.xからPython3.xに切り替えた話

少し手元でPythonを使いたいタイミングが生じてきたので切り替えを行ったのですが、結構面倒だったのでメモします。いい方法を知らないだけかもしれませんが。今年の3月くらいに自宅用のMacBookProを切り替えたのですが、Pythonのバージョンを確認したところバージョンが2.7で、3.x系を使いたいけどどうすればいいんだろう・・・?と思って色々調べたまとめです。

なお、今回はpyenvを使用しますが、システム本体のPythonバージョンを引き上げればよいのでは・・・?という向きもあるかもしれません。しかし、システム本体のPythonを引き上げてしまうと、3.x→2.xに戻したい際に手間がかかるのと、色々ハマるらしいのでやめました。実際、pyenvで切り替えを管理するほうがはるかに楽だと思うので、そちらをおすすめします (2017-07-10追記: anaconda を使う手もあります。というか、最近はそうしてしまっています。)。

まずやること

当たり前ですが、この作業を始める前にひとつだけ確認事項があります。Pythonのバージョンを確認しましょう。

python --version

これで、Python 3.x.xと返ってきていれば、この作業はまったく必要がありません。一方で、Python 2.x.xと返ってきてしまった場合は、この作業が必要です。

手順

下記の手順で行えば、まともに動くかと思います。

  1. Homebrewをインストール:今回の記事では割愛しますが、インストールが必要です。
  2. pyenvをインストール:Homebrewを使用してpyenvを入れます。
  3. pyenvを使って、Python3.x.xをインストール:コマンドひとつです。
pyenvをインストー

Homebrewがインストールされていれば、下記のコマンドを打つだけでインストールできます。

brew install pyenv

しばらくすると、インストールが完了した旨のメッセージが出ます。念のため、下記のコマンドを打つと確実です。pyenvが入っていれば、バージョン情報が表示されます。

pyenv --version

それを確認できたら次の作業に進みましょう。

pyenvを使って、Python3.x.xをインストー

pyenvを正常にインストールできたら、次は環境変数を通す必要があります。結構面倒な作業で、初めてやるときは苦戦しますので、丁寧に見ていきます。

.bach_profileがあるかどうかの確認

まず、手元の環境に.bash_profileというファイルがあるかどうかの確認が必要です。ここに環境変数を設定しますので、このファイルが存在しなければ作成する必要があるためです。次のコマンドを打つと確認できますので、目視で確認してください。

cd ~
ls -la

もし、.bash_profileがなかった場合は、次のコマンドを打って.bash_profileを作成します。勝手に作っても問題はありません。

touch .bash_profile

完了したら、作成できたかどうかを確認します。

ls -la
環境変数を通す

vimを起動して、下記のコードを.bash_profileに書き込みます。

export PATH="$HOME/.pyenv/shims:$PATH"

vim:wqコマンドで保存します。そして、忘れてはならないのですが、.bash_profileに設定した内容を即刻反映させないと、あとの作業で「あれ?環境変数が切り替わってないぞ?」となってしまうので、下記コマンドを打って変更内容を反映させましょう。

source ~/.bash_profile

最後に、下記コマンドを打って正しく設定されたかどうかの確認作業をします。

which python

ここに、pyenvのパスが表示されていれば正常に設定完了です。

インストール可能なPythonの確認と、インストー

インストール可能なPythonのバージョンは下記コマンドを使用して確認。

pyenv install -l

次に、欲しいPythonのバージョンを決めてインストール(今回は3.5.0が欲しかったので、3.5.0をインストールします。他のバージョンでも同様です。)

pyenv install 3.5.0

このコマンドを打つとインストールが始まりますので、しばらく待ちましょう。通常終了した場合は、次のコマンドを打って、使いたいPythonのバージョンを指定します。

pyenv global 3.5.0

あるいは

pyenv local 3.5.0

globalを指定すると全体に適用でき、localを指定すると特定のディレクトリに対して指定できます。

(2017-07-10追記) 反映がうまくいっていなさそうな場合、pyenv rehashを打つとバージョンの変更が反映されます。

設定方法は以上です。