Pythonをインストールしようとすると必ず目に入ってくるのが pyenv、virtualenv、pip、anacondaという用語です。
Pythonの環境についての予備知識がない私にとって、どれが必要なのか、どれから始めるのか、そもそも用語もわかりませんでした。
この記事では、はじめてPython環境を作る人向けに
pyenv、virtalenv、pip、anaconaの役割をご紹介します。
※基本は、MacでPython3をインストールしたい人向けに説明しています。
ざっくりした説明
- pyenv:Pythonのバージョンを切り替える
- virtualenv:1つのマシンの中にいくつも別の開発環境を作れる
- pip:virtualenvで作った環境に必要なライブラリを追加する
- Anaconda:pyenv+virtualenv+pipとほぼ同じ働きの別の仕組み(pyenvでanacondaをインストールできるので、別の仕組みというにはちょっと違いますが、だいたいこんな感じです)
pyenv(ピーワイエンブ、パイエンブ)
pyenvは、1台のマシンでPythonのバージョンを切り替えることができます。
例:Python2.7とPython3.1を切り替えて使う
Pythonは2.x系と3.x系が混在していて(今では3になりつつありますが)、開発プロジェクトによっては、どちらかを使わざるを得ないことがあります。
pyenvでPythonのバージョンを切り替えられれば、複数のプロジェクトを並行して行うときに便利です。
今は「Python3.7.1」を使い
次のプロジェクトではPython2.7.10を使う、
というときに便利です。
virtualenv(バーチャルエンブ)
virtualenvを使えば、プロジェクトごとに独立した開発環境を作ることができます。仮想環境と呼ばれます。Pythonのバージョンだけでなく、別々のライブラリを使うことができます。
Pythonの開発には、Python本体の他にさまざまなライブラリを利用します。
それぞれのプロジェクトでは、ProjecctAだけに使うライブラリ、ProjcctBだけに使うライブラリ、ProjectAとProjectCに使うライブラリなど、それぞれの条件があります。
全部混ぜてしまうと余分だし、後々の管理も難しくなります。
virtualenvは、1つのシステムの中に、必要な環境ごとにライブラリや使えるバージョンを分けることができます。
こうすれば、終わったプロジェクトの修正のとき「手元の環境のライブラリがバージョンアップして戻れなかった」などということがなくて済みます。
pip、pip3(ピップ)
pipはPythonのライブラリなどをインストールするコマンドです。
Python 2.x系のバージョンに含まれるのがpip、Python 3.x以上に含まれるのがpip3です。
Pythonをインストールすると含まれているので、自分でインストールする必要はありません。
virtualenvで作った環境に、必要なライブラリなどをインストールするにはpip(pip3)を使います。
例:$ pip3 install パッケージ名
Anaconda(アナコンダ)
Anacondaは、Python開発に必要なライブラリやパッケージをまとめたもの(ディストリビューション)で、データサイエンス、機械学習などによく利用されています。
Anacondaをインストールすると、pyenvとvirtualenvを使わなくても、プロジェクトごとに別々の環境をつくることができます。
Anacondaについて調べると、condaとMinicondaという用語も目に止まります。
conda(コンダ):Anacondaの環境の中でPythonのバージョンを切り替えたり、ライブラリを管理します。Anacnda、Minicondaをインストールすると同時にインストールされます。
Miniconda(ミニコンダ):Anacondaは最初から数多くのライブラリが含まれていますが、Minicondaは最小限のライブラリしか含まれません。その分、容量が少なくなっています。
必要なライブラリはあとから、condaを使ってインストールできます。
まとめ
Pythonをインストールするなら、職場や学校など、自分にあった環境に合わせて選ぶといいでしょう。
MacへのPython3のインストールは
- pyenv+virtualenvを利用してインストール
- Anacaonda(またはMiniconda)を利用してインストール
の他に、
- 公式サイトからのインストール
もあります(Python2はもともと入っています)。
公式サイトからのインストール方法とアンインストールについての記事も参考にしてみてください。
コメント