LoginSignup
3
2

More than 5 years have passed since last update.

pyenvとvirtualenvとvirtualenvwrapperを試しに使ってみた話

Last updated at Posted at 2017-05-06

今まで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で環境切ったほうが良さそう。

3
2
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
3
2