anacondaを使っているとよく以下のように使いたいパッケージがないことがある。
% conda install pyaudio
Collecting package metadata (current_repodata.json): done
Solving environment: failed with initial frozen solve. Retrying with flexible solve.
Collecting package metadata (repodata.json): done
Solving environment: failed with initial frozen solve. Retrying with flexible solve.
PackagesNotFoundError: The following packages are not available from current channels:
- pyaudio
Current channels:
- https://conda.anaconda.org/conda-forge/osx-64
- https://conda.anaconda.org/conda-forge/noarch
To search for alternate channels that may provide the conda package you're
looking for, navigate to
https://anaconda.org
and use the search bar at the top of the page.
そんな時ネットで調べると、パッケージは極力condaでインストールすべきだけど、できないものはpipでと書いてあるので私もそうしてきたが学習を進めていくうちに結構不便なことが浮き上がってきた。
問題点① pipとanacondaは基本的に互換性がなく、例えpipでインストールできたとしてもpythonとパッケージのバージョンの違いや微妙な名前の違いで動作しないことがある。
問題点 ②pip listやconda listなどでパッケージのインストール状態は把握することができるが、両者を並行して使うとどこで何をインストールしたか頭の中で把握しづらい。例えばpipはconda環境の上にあり、それぞれのconda環境はお互いにpip環境の下で独立している。なのでconda installを使えばそれぞれのpythonバージョンにあったパッケージを使えるし他の環境と干渉し合わない。また、仮想環境一つを消去してしまっても他の環境には影響しない。スマホで例えると、スマホ自体の言語を英語に設定してしまうと全てのアプリが英語になるが、アプリ設定からそれぞれ言語を変更するとそれぞれ個別にカスタマイズでき、一つのアプリを消してもスマホ本体や他のアプリに影響はないような感じだ。
それではconda installで取得できないパッケージはどのようにインストールすれば良いか。
① ブラウザで「(ライブラリ名) anaconda」で検索する。
② 検索結果から、anaconda公式サイトの記事を探す。(https://anaconda.org/)
③記事下部にあるコマンドをターミナルに打ち込む
上記のpyaudioをインストールしたいときは
conda install pyoudio
ではなく
conda install -c anaconda pyaudio
とするとインストールできる。
④それでも見つからない場合は他の記事を参考にしてみたり、pythonのバージョンを変更して見たりする。ほとんどの場合ここまでで解決するが、最終的にpipを使用することを検討する。