🐰

conda と pip の違い

2023/06/26に公開

Python 勉強の最初の関門 ー pip or condaー

Python 環境構築(ローカル編)

今回紹介する 2 つの方法は以下です。

  1. Python 公式版
  2. Anaconad 版

誰のための記事か?

忙しい人の中でも

  • 初めて Python を勉強する方
  • conda と pip の違いがわからない方

を対象とします。
そのため丁寧な解説よりも、まずはどちらを選択して利用すればいいか?で迷う時間を短縮していただければと思います。

慣れてきたら、別のサービスでライブラリ管理を行ったり、仮想環境を構築してみるといいと思います。

この記事を読み終わったあとのゴール

皆さんは、Numpy を使用するとき、どちらの方法でインストールをしましたか?
また、どうして 2 通りの方法があるのか?を知っていますか?

  1. pip コマンド(PyPI)
pip install numpy
  1. Anaconda
conda install numpy

1 と 2 の違いを理解して、皆さんが今後、どちらのサービスを利用していけばいいのかのヒントを軽くまとめていきます。
この記事は、どちらかのサービスを強く推奨するものではありません。
どちらのサービスを利用するかは、ご自身の目的に合わせて決定をしてください。

Python でライブラリを使用するには?

Python を使用する環境には、

  1. プログラミング言語の Python をインストール
  2. Python を実装する際に使用するライブラリをインストール

することが、最低限必要な作業となります。
今回は、1 は省略、 2 についてみていきます。
ここでは 2 通りの方法を紹介します。

The Python Package Index(PyPI)

Python 言語開発コミュニティの 「Python Software Foundarion(PSF)」 が運営する、 Python 用ソフトウェアの公開サービスです。
「pip」 または 「pip3」 というコマンドを使用しているのは、こちらのサービスを使用しています。

このサービスは、誰でも自由に自分のライブラリ(ソフトウェア)を公開・インストールすることができます。
Github などで公開されているものは、こちらの PyPI に登録されています。

Anaconda

データサイエンスに必要な各種ツール、ライブラリを提供するプラットフォームです。
Python に限らず、データサイエンスに関わるコマンドやプログラミング言語も提供しています。
また、GUI(Anaconda Navigator) と CUI(conda) 、両方での操作が可能です。
conda というコマンドを使用しているのは、こちらのサービスを利用しています。
Anaconda Cloud という独自のリポジトリで公開しています。
上記、 PyPI で公開されているライブラリの全てではないですが、Anaconda にも登録されてます。

pip と conda、どちらを使用するかの判断は?

先に概要だけ記載します。この後の 「注意書き」 にも目を通してくださいね!

pip

プログラミング入門、いろんな業務の効率化、web アプリ作成などの、一般的な Python プログラミングを学びたい方向けのようです。ウェブや参考書では、pip での解説が多い印象があります。

conda

汎用的なプログラミングを学ぶのではなく、データサイエンス・機械学習などの学習を目的とする場合にはこちらがおすすめのようです。データサイエンスで一般的に使用するツールやライブラリがインストール済で提供されるため、環境構築の時間が短縮されます。

注意点

pip

Anaconda の方がデータサイエンス系に強いサービスではあるため、PyPI(汎用的な Python) には関係のないソフトウェアなどもインストールできるそうです。
同じソフトウェアが両方に登録されている場合、Anaconda の方がよりデータサイエンス系に最適化されているケースもあるそうです。

conda

データサイエンスと関係がない、web アプリ実装などの関連参考書・サイトでは、conda を使用するケースは少ない印象です。

やらないでほしいこと

これをしてしまうと、ライブラリ管理の違いによる不具合が発生する場合があリます
簡単に解説します。

Numpy を pip と conda でインストールした場合、

  • PyPI からは、 pip でインストールした Numpy しか把握できない
  • Anaconda からは、conda でインストールした Numpy しか把握できない

という、それぞれ独立した環境でライブラリを管理しています。

そのため、たとえば、Anaconda 環境で pip を使用するとライブラリの依存管理に不具合が発生する場合があります。
上記を理解している方は、ごちゃまぜにしない・しっかり管理できているはずなので、問題はないかもしれません。
しかし初心者には難しい方法になるため、環境の二重管理はおすすめできないです。参考記事からの引用になりますが、個人的にも両方を使用するのはハードルが高いため、おすすめできません。

Anaconda で PyPI だけにあるライブラリを使用する場合は、pip を使用するしか道はありません。
逆も然りです。
その際、たとえば、pip でインストールする前に以下のコマンドを実行して、Anaconda で公開されてないか?の確認をしてください。
公開されていなかったら、 pip を使用しましょう。

conda search

あとは PyPI と Anaconda をうまく切り分けて使用する方法がいいかと思います。

個人的に Anaconda のメリットとデメリット

Anaconda のいいところは、

  • GUI でも操作できる
  • データサイエンス系のライブラリはすでにインストール済なので、conda で毎回インストールしなくてもデフォルトで使用できるライブラリがある

です。初心者でも環境構築にかかる時間が短縮されます。

デメリットとして、

  • すでにライブラリがインストール済

という部分です。
必要ないライブラリも用意されているケースが多いため、PC のメモリを使用してしまいます。
僕は写真や音楽が趣味で、かつ色々なツールを動かしているので、Anaconda をインストールして使用してみたら、かなり容量食いました。

また、僕が実装している現時点では Anaconda でないとだめ!というケースに遭遇していないため、PyPI を使用しています。
都度、ライブラリのインストールをしますが、情報量は PyPI の方が多い印象なので、困っていないです。

pip と conda どちらがいい?の結論

個人差があるので、メリット&デメリットを考えて使用するのがいいかと思います。
Anaconda は商用利用が NG となったので、その部分と二重管理をしなければ
個人での学習には大きな問題は発生しないと思います。
僕なら情報量の多い方を使用するかな?くらいです。
※ Anaconda をアンインストールして、PyPI に乗り替えた人間です

おまけ

PyPI も Anaconda も仮想環境を簡単に構築できます。
PyPI → venv
Anaconda → conda

ただ、仮装環境を構築する方法は他にもあります。
環境構築する際は、どの手段を用いるのが適切か?を考慮して使用しましょう。
今回の解説範囲外のため、ここで紹介終了です。

参考

Pyhon Japan Python 環境構築ガイド

最後に

たまーに、conda と pip の両方を使用しているがよくわからず両方使用している方を観測するので、難しい問題に直面する前に、環境構築について知っておくといいかも?と感じたことをまとめました。
この系統の話は、公式ドキュメントに詳細な記述があったりするので、そちらも参考にしていただけるといいかと思います。

ここまで読んでいただきありがとうございます。
誤字脱字、認識間違えなどありましたらコメントをいただけると幸いです。
ご質問なども承りますので、コメントへの記載をお願いいたします。

以上です!

Discussion