今までPythonの環境はpyenvで扱っていたが、よく耳にするのでvirtualenvを使ってみた。
一緒に、virtualenvwrapperもインストールする。
事前環境
こんな感じ
$ pyenv versions
system
* 3.5.2 (set by /Users/hikaru/.pyenv/version)
インストール
python 3.5.2の環境でインストールする。
$ pyenv version
3.5.2 (set by /Users/hikaru/.pyenv/version)
$ pip install virtualenv virtualenvwrapper
セットアップ
以下を.bashrcに書く
export WORKON_HOME=$HOME/.virtualenvs
source $PYENV_ROOT/versions/3.5.2/bin/virtualenvwrapper.sh
次のコマンドを実行。
$ mkdir ~/.virtualenvs
$ source ~/.bashrc
ハマりかけたのが、sourceするvirtualenvwrapper.shの場所。
$HOME/.pyenv/shims/virtualenvwrapper.shというファイルもあるが、これは上記のものとは別物。
というか、これをsourceするとterminalがexit?された。
動かす
環境の構築
$ mkvirtualenv django
Using base prefix '/Users/hikaru/.pyenv/versions/3.5.2'
New python executable in /Users/hikaru/.virtualenvs/django/bin/python3.5
Also creating executable in /Users/hikaru/.virtualenvs/django/bin/python
Installing setuptools, pip, wheel...done.
virtualenvwrapper.user_scripts creating /Users/hikaru/.virtualenvs/django/bin/predeactivate
virtualenvwrapper.user_scripts creating /Users/hikaru/.virtualenvs/django/bin/postdeactivate
virtualenvwrapper.user_scripts creating /Users/hikaru/.virtualenvs/django/bin/preactivate
virtualenvwrapper.user_scripts creating /Users/hikaru/.virtualenvs/django/bin/postactivate
virtualenvwrapper.user_scripts creating /Users/hikaru/.virtualenvs/django/bin/get_env_details
(django) $ pip list -l --format=columns
Package Version
---------- -------
appdirs 1.4.3
packaging 16.8
pip 9.0.1
pyparsing 2.2.0
setuptools 35.0.2
six 1.10.0
wheel 0.29.0
こんな感じで、djangoという環境ができた。
パッケージも必要最低限のものだけ入っている。
環境を抜ける
(django)$ deactivate
$
workonコマンドで環境一覧を表示、オプションで環境を選択し、各環境に入ることができる。
$ workon
django
$ workon django
(django) $
環境の削除
$ rmvirtualenv django
Removing django...
$
Pythonを指定して環境構築
python3.5.2環境下でmkvirtualenvを実行したらpython3.5.2の環境ができたが、明示的に他のpythonを使うこともできる。
$ mkvirtualenv --python=/usr/bin/python2.7 django
Running virtualenv with interpreter /usr/bin/python2.7
New python executable in /Users/hikaru/.virtualenvs/django/bin/python
Installing setuptools, pip, wheel...done.
virtualenvwrapper.user_scripts creating /Users/hikaru/.virtualenvs/django/bin/predeactivate
virtualenvwrapper.user_scripts creating /Users/hikaru/.virtualenvs/django/bin/postdeactivate
virtualenvwrapper.user_scripts creating /Users/hikaru/.virtualenvs/django/bin/preactivate
virtualenvwrapper.user_scripts creating /Users/hikaru/.virtualenvs/django/bin/postactivate
virtualenvwrapper.user_scripts creating /Users/hikaru/.virtualenvs/django/bin/get_env_details
(django) $ python --version
Python 2.7.10
(django) $
ちゃんとpython 2.7.10が動いている。
まとめ
pythonのversionごとにパッケージを管理する必要がない場合、virtualenvは必要なさそう。
一方、互いに悪影響するパッケージがあったり、細かいバージョン指定が必要な場合は、
virtualenvで環境切ったほうが良さそう。