Pythonのパッケージを使いたいが、自分が使っているPythonのバージョンと互換性がなかったり、手持ちのパッケージの新しい/古いバージョンに依存していたりと色々と面倒な思いをすることは往々にしてある。そこで
- Pythonのバージョンを自由に切り替えられるようにpyenvを
- Pythonパッケージのバージョンを自由に切り替えられるようにvenvを
使う。
pyenvのインストール
まずインストールする。Macならhomebrewで入れれば良い。
brew install pyenv
MacでなくLinuxとかなら
git clone https://github.com/yyuu/pyenv.git ~/.pyenv
で入れる。
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init --path)"
eval "$(pyenv init -)"
を実行しておいてから、
pyenv install --list
を実行してPythonの利用可能なバージョン一覧が出力されたら成功。
pyenvで任意のバージョンのPythonをインストール
すでにマシンに入っているPythonのバージョンとは違うバージョンでPythonを使いたいと思ったら、上記コマンドの出力結果の中からバージョンを選んで
pyenv install [バージョン]
を実行すれば今後それを使うことができるようになる。
pyenv versions
の結果に指定したバージョンが入っていれば成功。
ちなみにインストールしたバージョンを消すには~/.pyenv/versions/
の中から当該バージョンをrm
すればOK。
プロジェクト用のPythonバージョンに切り替える
ここからはプロジェクト毎に行う。
すでにマシンに入っているPythonのバージョンとは違うバージョンでPythonを使いたいときは、プロジェクトの作業ディレクトリに入ってから
pyenv local [バージョン]
でバージョンを切り替える。
python3 --version
の結果が指定通りのバージョンになっていたら成功。
venvでパッケージを切り替える
作業ディレクトリにて、pyenvでバージョンを切り替えた状態で以下を実行すると.venv
ディレクトリができる。これが仮想環境のディレクトリである。
python3 -m venv .venv
あとは仮想環境をアクティベートすればそのプロジェクト用に好き放題pip3 install
して良くなる。
source .venv/bin/activate
ちなみに仮想環境から抜ける時は
deactivate
すればよく、仮想環境自体を消したければ.venv
ディレクトリをrm
すればOK。
ところで、pip installがうまくいかないことがある。その場合は、pipのバージョンが古かったり、Pythonのバージョンとして正しいものを使っていなかったりというのが原因であることが多い。それらのバージョン更新というのは自分でやるとして、何かバージョンを指定してインストールしようとしてうまく行かなかったときはURLを指定してインストールする方法がある。(参考)
今後簡単にセットアップできるようにする
以下のようなスクリプトを作業ディレクトリに入れておく。(普通は~/.bash_profile
などに書き込むが、必ずしもいつもpyenvを使いたいわけではないので自分はこうしている。)
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init --path)"
eval "$(pyenv init -)"
pyenv local [使いたいPythonのバージョン]
source .venv/bin/activate
今後新しいシェルでプロジェクトを使うときは最初にsource setup.sh
すればよい。
参考にしたサイト