Python
pyenv
Anaconda
conda
venv

Pythonの仮想環境についてのまとめ(自分用メモ)

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モジュールを実行することが推奨となった

参考:

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が必要かどうかフローチャート

私見・頂いた意見等