LoginSignup
1
1

More than 1 year has passed since last update.

pyenvとvenvを使って簡単にプロジェクト専用の環境構築をする

Last updated at Posted at 2022-02-23

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を使いたいわけではないので自分はこうしている。)

setup.sh
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すればよい。

参考にしたサイト

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1