EnsekiTT Blog

EnsekiTTが書くブログです。

pyenv-virtualenvを使って都合のいいように Pythonパッケージ環境を行き来する話

こんにちは、えんせきです。
Goodfellow先生他が書いて松尾教授が監訳した深層学習が届いたので、ペラペラめくって見ています。

つまりなにしたの?

度々、Blogで何か作業する時に使っているpyenv-virtualenv。画処理をするためのパッケージ郡、ディープラーニングをするためのパッケージ郡等色々別々に入れて、行き来すると便利。
というわけで、最近OSをクリーンインストールしてpyenv-virtualenvをインストールし直したので紹介する。
さすがにそれだけだとアレなので使い方も紹介する。
f:id:ensekitt:20180316003545j:plain

pyenv-virtualenvとは?

UNIXライクなシステム上でPythonの仮想環境と環境を管理する機能を提供てくれる。
具体的には、作業するディレクトリごとにPythonのバージョンや入っているパッケージを決めて自動的に反映してくれて便利だから使っている。
github.com

インストールする方法

最近クリーンインストールしたのはUbuntuなのでUbuntuの場合とMacOSの場合を紹介する。

Ubuntuの場合

便利なのでInstallerを使ってしまっている。
github.com

curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash

.bash_profileや.zshrcに以下を追加する

export PATH="$HOME/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"

MacOSの場合

便利なのでHomeBrewを使ってしまっている。

brew update
brew install pyenv-virtualenv

.bash_profileや.zshrcに以下を追加する

export PATH="$HOME/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"

使う方法

Pythonのバージョンを指定してインストールする

例: Python3.6.4をインストールしたい場合

pyenv install 3.6.4

例: Anaconda3-5.1.0をインストールしたい場合

pyenv install anaconda3-5.1.0

新しい環境(virtualenv)を作る

Pythonのバージョンを何らか入れてあるとする。
例: Python3.6.4でmypyenvという名前の環境を作る場合

pyenv virtualenv 3.6.4 mypyenv

ディレクトリで使う環境(virtualenv)に反映する

mypyenvという環境を作ってあるとする
例: mypyenvdirというディレクトリに入ったらmypyenvという環境が使えるようにする場合

mkdir mypyenvdir
cd mypyenvdir
pyenv local mypyenv

プロンプトに環境名がつくので、さらに実行して確認

(mypyenv) $python
Python 3.6.4 (default, Mar  2 2018, 00:45:54)
>>>

環境にパッケージをインストールする

mypyenvが反映されたディレクトリにいるとする。
例: numpyをインストールする

pip install numpy

環境のパッケージをアップグレードする

実験用にmypyenvを作ったのが古くて、最近のパッケージに一斉に更新したいと思ったとする。
例: mypyenvのパッケージを一斉にアップグレードする場合
【危険】既存のコードを動かす環境になっている場合アップグレードは慎重にやったほうがよい

pip list -o | awk '{print $1}' | xargs pip install -U

ディレクトリで使う環境をシステムデフォルトに戻す

例: ディレクトリで使う環境をシステムデフォルトのPythonに戻す場合

pyenv local system

プロンプトの環境名が外れるのでさらに実行して確認

$python
Python 2.7.10 (default, Jul 15 2017, 17:16:57)
>>>

過去にmypyenvを反映したディレクトリには
.python-version
という以下のディレクトリで反映するべき環境が書いてあるファイルが残っているので、
これも都度削除すると良い。
仮にまだ使っているところでこれを削除しても、

pyenv local mypyenv

すれば復活するので大丈夫。

どんな環境があったか確認する

例: 調子に乗って幾つか環境を作ったが何が入っているかわからなくなった場合

pyenv versions
  system
  2.7.13
  3.6.4
  3.6.4/envs/mypyenv

環境を削除する

例: いらない環境(mypyenv)を見つけた場合

pyenv uninstall mypyenv

削除した環境を確認する

pyenv versions
  system
  2.7.13
  3.6.4

楽しいpyenv-virtualenvライフを

クリエイティブ・コモンズ・ライセンス
この 作品 は クリエイティブ・コモンズ 表示 4.0 国際 ライセンスの下に提供されています。