pythonを使うことになりそうなので、バージョン管理を考えたpythonの環境構築メモを残していきたい所存である。
Pythonのバージョン管理について
Pythonは2系と3系がある。
Python3は2008にリリースされたが、Python2でしか利用できないライブラリが少なくないという理由からPython2を開発環境として選択されることがまだまだある。
Python2とPython3は一部互換性がないところがあり、Python2で開発したものをPython3にするのはめっちゃ大変。
というわけでPython3でコードを書くのが普通だけど、Python2の環境も必要になることもあるかもしれないから、サクッと切り替えられるようにしておいたほうが便利だねって話。
また、Python3もバージョンごとに多少書き方も変わるし、それぞれのバージョンをサクッと変えられるようにして置くとめっちゃ便利だよねって話。
便利ツール
有名なのはこの3つらしい。
pyenv
Pythonのバージョンを管理するツール。
Homebrewで導入可能。
$ brew install pyenv
例えば一つのパソコンに
- 2.7.4
- 2.7.6
- 3.2.2
- 3.3.6
といくつかのバージョンをインストールしておくことができ、開発中のソフトに合わせて「2.3.6」に切り替えたり、「2.7.6」に切り替えたりできる。
virtualenv
同一バージョンのPython環境を管理するツール
pipで導入可能。
$ pip install virtualenv
例えば、現在Python 3.3.6だとする。
これからPython 3.3.6を使って開発するものとして下記があるとする。
- 開発名:A(利用パッケージ:1,2,3)、Python 3.3.6
- 開発名:B(利用パッケージ:3、4,5)、Python 3.3.6
こういうときvirtualenvが便利。
$ virtualenv A ←仮想環境Aを制作
こんな感じで仮想環境を作ることができる。
例の場合は仮想環境A,Bを作って今開発中の開発環境にその都度切り替えて開発していけばよい。
仮想環境Aで入れたパッケージは仮想環境Aでしか使えないし、仮想環境Bで入れたパッケージは仮想環境Bでしか使えない。
仮想環境Aでパッケージ1,2,3を入れたあと、仮想環境Bに切り替えてパッケージリストを見てもパッケージ1,2,3は存在しないというわけ。
仮想環境の設定はProjectファイルの中に保存されるみたいだ。
# 仮想環境 "A" を有効化 (activate)
$ source A/bin/activate
仮想環境Aを有効化するときはこんな感じで有効化するみたい。
pyenv-virtualenv
pyenv拡張機能的な感じ?
Homebrewで導入可能。
$ brew install pyenv-virtualenv
pyenvではバージョンを「pyenv global “(例)3.3.6″」で切り替えることが可能だが、この指定するバージョンの部分に仮想環境を作って追加することができるようになる感じみたい。
# pyenvで切り替えられるようにしているバージョン一覧
$ pyenv versions
2.7.5
* 3.3.6 (set by /Users/username/.pyenv/version)
# 仮想環境Aを作成
$ pyenv virtualenv 3.3.6 A
# pyenvで切り替えられるようにしているバージョン一覧
$ pyenv versions
2.7.5
* 3.3.6 (set by /Users/username/.pyenv/version)
A ←仮想環境Aが生成された。
生成した仮想環境はHOMEディレクトリのpyenvの管理フォルダの中のversionフォルダに新しく生成されるみたい。
開発中のProjectをいじるときにpyenvコマンドで使用する仮想環境に切り替える必要があるみたいだ。
どういう風に使うべき?
Pythonのバージョンを切り替える必要がないのであれば「virtualenv」のみの導入がいいだろう。しかし、Pythonのバージョンを切り替える必要があるのであれば、「pyenv + pyenv-virtualenv」もしくは「pyenv + virtualenv」という導入が良いように思われる。
- virtualenv : バージョン切り替えしない
- pyenv + pyenv-virtualenv : 環境はHOMEディレクトリの配下に生成
- pyenv + virtualenv : 環境はProjectディレクトリ配下に生成
「pyenv + pyenv-virtualenv」か「pyenv + virtualenv」でどちらを選ぶかは、各々の好みで変わってくると思う。
環境は全部HOMEディレクトリに起きたければ「pyenv + pyenv-virtualenv」を選べばいいし、環境もプロジェクト単位でまとめたいのであれば「pyenv + virtualenv」を選ぶべきだろう。
コマンド一覧
最後にコマンド一覧を載せて終わり。
pyenv
# pyenvで切り替えられるバージョン確認
$ pyenv versions
* 2.7.5 (set by /Users/username/.pyenv/version)
# 異なるバージョンのPythonをインストール
$ pyenv install 3.3.6
# 基本バージョンの切り替え
$ pyenv global 3.3.6
# 特定のディレクトリ以下でのみバージョンを切り替え
# 例”/Users/username/workspace/A”以下だけpython2.7.5にする。Aディレクトリ外ではglobalの3.3.6が適応。
$ pyenv local 2.7.5
virtualenv
# プロジェクトディレクトリのトップディレクトリで実行する。
# 仮想環境有効化状態でpip installしたものは仮想環境下のみで有効。
# 仮想環境 "A" を作成する
$ virtualenv A
# 仮想環境 "A" を有効化 (activate)
$ source A/bin/activate
(A) $ # ← 現在 activate されている仮想環境名が表示される
# 仮想環境を無効化
(A) $ deactivate
pyenv-virtualenv
pyenvのコマンドをわかってる上で下記コマンドを使っていく。
# 仮想環境を作成
# pyenv virtualenv [バージョン] [仮想環境名]
# [バージョン] を省略すると現在のバージョンが使われる。
# A を入れる用の仮想環境
$ pyenv virtualenv 3.3.6 A
# 仮想環境だけ表示
$ pyenv virtualenvs
# 仮想環境の削除
$ pyenv uninstall A
コメント