pip install と conda install の比較

Anaconda環境で作業する場合、pip installとconda installの違いを理解していないと競合が起こり環境が壊れてしまう場合があります。

この記事では、競合が原因で環境が壊れてしまうことがないようpip installとconda installの違いについて調べたものを、備忘録として共有しようと思います。

また、Jupyter Notobookで”No module named”が生じた場合の解決方法についてもおまけで付けてあります。

目次

pipとは

Python開発元であるPython SoftWare Foundationが提供するPythonパッケージの配布サービスにPyPi (Python Package index) というものがあります。pipとは、このPyPiを利用する際の標準パッケージ管理コマンドです。pipを使用することでパッケージのダウンロード・インストールなどを行うことができます。

Pythonを用いたプログラミング(科学技術計算と関係がないもの)ではpipが使用されます。そのため一般書籍ではpipコマンドを使用したパッケージインストールが記載されている場合が大半となっています。

condaとは

科学技術計算などで用いられるAnacondaでは、パッケージはAnaconda Cloud上で提供されます。condaとは、Anaconda Cloudにアクセスし、パッケージのダウンロード・インストールを行うための標準パッケージ管理コマンドです。

Anacondaは、科学技術計算で利用されるサービスとして、Pythonとは関係性のないソフトウェアの提供も行っています。そのためpipコマンドではなく、独自のcondaコマンドが用意されています。

pipとcondaの比較

pipとcondaの違いについてはAnaconda公式の表がわかりやすいと感じたので引用させていただきました。

pipconda
manageswheel or sourcebinaries
can require compilersyesno
package typesPython onlyany
create enviromentno, requires virtualenv or venvyes, built in
dependency checksnoyes
package sourcesPyPiAnaconda repo and cloud
引用:Anaconda | Understanding Conda and Pip

pipとcondaが競合する理由

pipとcondaは共に独立してパッケージの管理を行います。ゆえにpipでインストールしたパッケージをcondaは把握していません。この逆も同様です。

またpipは、パッケージインストールが行われた際、他のパッケージとの依存関係を自動的に良好に保つよう働く機能を持ちません(pipではインストールを行う前にパッケージの依存関係をチェックしておく必要がある)。これにより、pipとcondaではパッケージの依存関係の管理に不具合が生じる場合があるというわけです。

pipとcondaの使い分け方

Anacondaを使用する場合はcondaコマンド、使用しない場合はpipコマンドとするのが一般的です。Anaconda環境下では、conda searchコマンドなどで必要なパッケージを検索してcondaコマンドでインストールができないかどうかを検討することがセオリーとなります。

どうしてもAnaconda環境下でpipコマンドを使いたいという場合には、現在使用している仮想環境のコピー環境を作成し、その環境でpipコマンドを利用したパッケージインストールのテストを行うことをおすすめします。

競合の可能性がある場合

競合が生じていないかを確認するには、使用中のAnaconda環境下でconda listを使う方法があります。パッケージが重複して並んでいるもののうち、一番右にpypiとあればそれがpipにてインストールされたパッケージです。condaでインストールされたものは一番右が空欄になります。

pip installされたものとconda installされたものが存在し、それが原因で競合が生じている場合には、一度Anaconda自体をアンインストールする必要があります。また場合によってはAnaconda Promptが動かないこともあるかもしれません。その際にはAnaconda-Cleanが使用できないので、コントロールパネル経由でのアンインストールが必要となります。アンインストールの方法については以下の記事にまとめています。

Jupyter NotebookでNo module namedなどが生じた場合

“No module named”などのエラー原因としては「指定したモジュールが存在しない」「指定したモジュールが未インストールである」などが挙げられます。この場合、基本的にはパッケージインストールを行うなどしてエラーを解消することとなります。

手っ取り早い方法としてはJupyter Notebook上でコマンドラインを実行してしまう方法です(先頭に!を付ければJupyter Notebook上でもコマンドラインとしての実行が可能)。

#pipを使用する場合
!pip install sklearn

condaコマンドを使用する場合にはyes/no入力が必要となるため以下のようにしてください。

#condaを使用する場合
!echo y|conda install sklearn

Anaconda環境下でJupyter Notebookを使う場合、もっと根本的な原因としてそもそも仮想環境にJupyter Notebookを置いていないという可能性もあります。その場合には以下のようにすれば仮想環境上にインストールできます。

conda install jupyter notebook
  • URLをコピーしました!

COMMENT

コメントする

※スパム対策をしております。コメントは日本語で入力してください。

CAPTCHA

目次
閉じる