2018/01/30 @aodag さんからTwitterでご意見を頂いたので、venvとpyvenvを統合しました。ご指摘どうもありがとうございました。
2018/01/29 @driller さんから頂いたご意見を参考にvenvの部分を修正しました。情報提供どうもありがとうございました。
2018/01/29 @kashew_nuts さんから頂いた編集リクエストを採用しました。編集リクエストどうもありがとうございました!
本記事の趣旨
以前もQiitaの記事にまとめたのですが、相変わらずPythonの仮想環境まわりのツールが似たような名前で混乱するので自分のために整理しました。あくまで、仮想環境周りの用語としてどんなものがあるか、いま自分が持っている知識をでもって選択するとしたら自分自身はどれを選ぶか、ということについて書いている記事であり、特定の環境を推奨したり、仮想環境の利用を推奨するものではありません。「まだまだ腑に落ちないことがあり」と書いていましたが、 @uranusjr さん、 @kashew_nuts さん、 @driller さん、 @aodag さんのご教示により、概ね情報が整理できましたので、現時点(2018/02/02)では間違ったことは書いてないはずです。
pyenv
- Python自体のバージョン管理ツール
- Windowsでは使えない
参考:
virtualenv
- Pythonの仮想環境作成ツール
- サードパーティ製パッケージ
- Python3.3以前のデファクトスタンダード
参考:
venv
- virtualenvが標準モジュールとなったときのモジュールの名称 (Python3.3~)
- pyvenvはvenvを利用するためのスクリプト
- Python3.5からpyvenvを使わずvenvモジュールを実行することが推奨となった
参考:
- https://docs.python.jp/3/library/venv.html
- Python3.3のvenvを試す
- https://docs.python.jp/3/library/venv.html
- Python の -m オプションについて
pipenv
- virtualenvとpipの両方を連携して扱えるサードパーティ製パッケージ
- 仮想環境の管理とパッケージのインストール管理をおこなえる
- 今後主流のPythonパッケージングツールになると期待されている
参考:
conda
- Anacondaインストーラ、 minicondaインストーラによりインストールされるAnaconda/miniconda用のパッケージ管理ツール
- PyPIに登録されており、pipでインストールすることもできるが、使うことはできない(2018/01/28 現在)
参考:
どれを使うか
いま自分が誰かに「仮想環境使いたいんだけど」と相談されたら、現時点(2018/01/28)では以下のように回答します。あくまで「相談されたら」です。繰り返しになりますが、特定のツールや仮想環境の利用を勧める意図はありません。
- Python2系と3系のどちらも使う機会がある人 --> virtualenv or pipenv
- Python3系だけを使っている人 --> venv or pipenv
- Anaconda/miniconda --> conda
- pyvenv --> 使ってはいけない(記憶から抹消してもOK)
pyenvを使うか否かについては以下の記事に詳しく書かれているので、こちらを参照するのがよいと思われます:
pyenvが必要かどうかフローチャート
私見・頂いた意見等
- pyenvが必要かどうかフローチャートではAnacondaが非推奨ですが、個人的には、とりあえずデータ分析や機械学習のためにPythonを使いはじめたいという方はAnacondaではじめるのはありだと思います。
- 今日教えてもらった以下のサイトにより詳しくまとまっていますので、環境構築に困っている方は一読するとよさそうです。参考文献リストも充実しています:
Pythonの環境構築を自分なりに整理してみる - Python ユーザーのための Jupyter 実践入門 読書 & もくもく会 - 1枚目の会場でインタビューしつつ書いていたのですが、pyenv下にAnacondaを置くのはあまり意味がないというのが大方の意見でした