pythonでもpyenvとvirtualenvを使えばRubyのbundlerやGemfileと似たことができる。
pythonでもバージョンやライブラリの管理が簡単にできるため、
これを期にpythonを試してみるのもあり。
環境
- OS
- Linux version 3.2.0-64-generic (buildd@kissel) (gcc version 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5) ) #97-Ubuntu SMP Wed Jun 4 22:04:21 UTC 2014
- pyenv
- 1.0.6-1-g0256ff0
- virtualenv
- 15.1.0
pyenvのインストールと設定
これは非常に簡単にできる。
pyenvのインストールと設定 123456789101112131415161718192021222324252627$ git clone https:
//github
.com
/yyuu/pyenv
.git ~/.pyenv
$ vim ~/.bashrc
export
PYENV_ROOT=$HOME/.pyenv
export
PATH=$PYENV_ROOT
/bin
:$PATH
eval
"$(pyenv init -)"
$
source
~/.bashrc
$ pyenv
install
3.5.2
Downloading Python-3.5.2.
tar
.xz...
-> https:
//www
.python.org
/ftp/python/3
.5.2
/Python-3
.5.2.
tar
.xz
Installing Python-3.5.2...
patching
file
Lib
/venv/scripts/posix/activate
.fish
Installed Python-3.5.2 to
/home/ml/
.pyenv
/versions/3
.5.2
# shimのリフレッシュ
$ pyenv rehash
# 使用するバージョン指定
$ pyenv global 3.5.2
$
which
python
$HOME/.pyenv
/shims/python
# アンインストール方法
$ pyenv uninstall 3.5.2
ライブラリの管理
pipコマンドを使ってライブラリのインストールができる。Gemfileに相当するのはrequirements.txtだ(実際には名前はなんでも良い)。
また、pythonのライブラリは基本的には実行できるスクリプトもインストールされることが
ほとんどのようで、bundle execのようなものは必要ないらしい。 pip installをすると同じpyenvで同じバージョンのpythonを使う環境すべてに影響を与えてしまう。
それを防ぐためにはvirtualenvというものを使う。
pythonでもphpのcomposerやrubyのbundlerのようなことができることがわかったと思う。 pyenvとvirtualenvを使って機械学習用のDockerfileを作ってみた。
ライブラリ管理 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263$
which
pip
$HOME/.pyenv
/shims/pip
# pipのバージョンが低かったりするので上げておく
$ pip
install
--upgrade pip
# virtualenvのインストール
pip
install
virtualenv
# virtualenvで名前の通り仮想環境を作成する
# pオプションで指定するのはpythonの実行ファイルパス
# (pyenvなら以下のようにpython${VERSION}で大丈夫)
# オプションなしの引数は仮想環境に入るためのスクリプトなどの設置パス
$ virtualenv -p python3.5 $HOME/.venv35_ml
# 仮想環境に入る
# プロンプトが"$"から"(.venv35_ml) $"に変わります
$
source
$HOME/.venv35_ml
/activate
# 基本的なライブラリのインストール方法
$ pip
install
numpy
Collecting numpy
Downloading numpy-1.9.2.
tar
.gz (4.0MB)
100% |████████████████████████████████| 4.0MB 91kB
/s
Installing collected packages: numpy
Running setup.py
install
for
numpy
Successfully installed numpy-1.9.2
# requirements.txtを利用した場合
$ vim requirements.txt
django<1.3
urllib3
nose==1.1.2
$ pip
install
-r requirements.txt
Collecting django<1.3 (from -r requirements.txt (line 1))
Downloading Django-1.2.7.
tar
.gz (6.4MB)
100% |████████████████████████████████| 6.4MB 50kB
/s
Collecting urllib3 (from -r requirements.txt (line 2))
Downloading urllib3-1.10.2.
tar
.gz (132kB)
100% |████████████████████████████████| 135kB 989kB
/s
Collecting nose==1.1.2 (from -r requirements.txt (line 3))
Downloading nose-1.1.2.
tar
.gz (729kB)
100% |████████████████████████████████| 733kB 416kB
/s
Installing collected packages: django, urllib3, nose
Running setup.py
install
for
django
Running setup.py
install
for
urllib3
Running setup.py
install
for
nose
Successfully installed django-1.2.7 nose-1.1.2 urllib3-1.10.2
# インストールされているライブラリの確認
$ pip freeze
Django==1.2.7
nose==1.1.2
numpy==1.9.2
urllib3==1.10.2
# gemratのようなこと
$ pip freeze > requirements_new.txt
# 仮想環境から退出
# 仮想環境外では先程インストールしたライブラリは使えない
$ deactivate
(Dockerですでに環境分離出来ているからvirtualenvはなくても大丈夫だけど一応使ってみた)