pyenv と virtualenv の違い
似ているようで違うので自分メモ
CentOS 6 のレガシーな環境は Python 2.6です。
pyenv
一つのシステムに複数のバージョンのPythonを入れるためのもの
- linux(というかCentOSとかRHとか各ディストリ)は割とPythonに依存している
- よって、/usr/bin/python を差し替えるようなインストールは難しい
- しかもPython 2/3の問題もある
- 使いたいpackage によって必要なPythonのバージョンも異なる
というものに対応するためのもの。一つのシステムに複数のバージョンのpython環境を入れるためのもの。
- pyenv global 2.7.15
システム全体で2.7.15を使わせる。linuxではほぼ使わないと思われ - pyenv local 2.7.15
今いるフォルダ(cwd)で、未来永劫 2.7.15 を使う。ここでpip installすると、システム全体の 2.7.15のsite-packageに入る。そのフォルダから上に行くと元から入っている2.6を使う - pyenv shell 2.7.15
現在実行しているシェルで2.7.15を使うexit(ctrl-D)してloginしなおすと、2.6に戻る。
この3つで自分的にはOK
virtualenv
pyenvでインストールした環境から自分専用の環境をforkするもの
ぶっちゃけ自分専用のvm使い捨て環境ならいらないか、と思っていたが、wheelを使えるので一人でも意味がある。
- pyenv virtualenv 2.7.15 2715forTensor
今いるフォルダにpyenvで作成した、2.7.15 の環境から特別な環境を作る。このあとにpipでインストールしたパッケージはシステム全体には波及されない - pip install wheel
wheel(コンパイル済み環境を保存する仕組み)をインストールする。 - pyenv exec pip wheel --wheel-dir=~/wheelhouse -r 2715forTensor.txt
今のvirtualenv環境を保存する。wheel-dirと.txtを保存しておけば下記で使える
別のサーバでpyenv/virutalenvを入れたあと
- pyenv virtualenv 2.7.15 275forTensor
pip install -r 2715forTensor.txt --use-wheel --no-index --find-links=~/wheelhouse
別のサーバとかでも上の環境が復元できるはず。インストール漏れとか間違いがかなり減るはず。
これくらいで自分はに充分かな。