Anacondaのcondaとpipのinstallコマンドを使い分ける方法(管理上の方針)

Pythonの基礎
スポンサーリンク

Pythonを利用するには、公式サイトのPythonをインストールしての利用と、Anacondaのパッケージをインストールしての利用があると思います。

公式サイトのPythonを利用している人には関係の無いことなのですが、Anacondaを利用している人には、パッケージのインストール方法にはcondaとpipからの2つの方法があります。

このcondaコマンドとpipコマンドを混在させるとエラーが生じることがあります。この問題を回避するための方法をまとめておこうと思います。

スポンサーリンク

Anacondaをインストールしたならcondaコマンドを!

この問題は、簡単に言うとcondaのinstallコマンドとpipのinstallコマンドを混在させて、同じパッケージをインストールしたような場合に、Pythonでimportできなくなるというような問題です。二つパッケージが混在してると衝突してしまうというような状況でしょう。

この混在を回避するために、Anacondaを利用している場合は、「conda installコマンド」を使ってパッケージをインストールするということを原則としましょう。pipコマンドではパッケージをインストールしないということです。

conda install <パッケージ名>

書籍やネットの記事などを参考にする場合、パッケージのインストール方法をpip installを使って説明しているものがあります。そこでは、必ず「conda install」に読み替えて利用しましょう。

この運用をすることで、パッケージの重複を防ぐことができます。

スポンサーリンク

condaにパッケージが無い時のconda-forge

pipを使わずにcondaのみを使っていれば、パッケージの衝突は起こることはありません。ただし、condaコマンドではインストールできないパッケージもあります。ネット上で管理されているパッケージの参照先(リポジトリ)の一覧が異なるからです。

そこで次は、conda-forgeというコマンドを利用します。anacondaのデフォルトのリポジトリ以外からのcondaのパッケージをインストールすることになります。

次のコマンドでパッケージをインストールします。

conda install <パッケージ名> -c conda-froge

あるいはこちらのコマンドです。

conda install <パッケージ名> --channel conda-froge

これで、condaコマンドではインストールできないパッケージを導入することができます。

なお、condaコマンドでconda-forgeを優先させる設定もあります。ここでは触れませんが、conda-forgeのサイトに手順となるコマンドが記載されているので参考にしてください。

スポンサーリンク

conda系のパッケージが無い時にpipを使う

以上のcondaコマンドで多くのパッケージをインストールすることができますが、それでも利用したいパッケージが無い場合があります。その状況になって初めてpip installコマンドを利用するというのも手です。

pip install <パッケージ名>

こういう流れを踏むことで、パッケージの衝突を避けることができます。

ただ、これでもついうっかりコマンドを使い間違えてしまうこともあるので、注意が必要です。

スポンサーリンク

condaの仮想環境下で作業する

やはり、どう使い分けをしていてもネットや書籍などを参考に作業をしていて、pipを使ってしまうこともあると思います。pipに体が慣れているということでもあるでしょう。

それならば、仮想環境を構築してから必要なパッケージのインストールにpipを使うようにするのもいいではないでしょうか。

仮想環境を利用すれば、不要になった仮想環境はそのまま捨てるだけでいいので、本体の環境には影響がないはずです。仮想環境下でpipを利用するのがいいのでは無いかと思います。

スポンサーリンク

まとめ

anacondaの環境では、パッケージのインストールにcondaとpipを混在して使うとエラーになることがあります。

この衝突を回避するために、anaconda環境を利用している場合は、condaコマンドをできるかぎり利用します。書籍などでpipコマンドを使って解説されている部分は、conda
に読み替えて利用します。

condaでインストールできないパッケージは、conda-forgeのチャンネルを利用します。それでもパッケージが無い時にpipコマンドを利用します。

本体の環境を壊さないために、仮想環境を構築して利用することも考えられます。これが現実的な対応かなと思います。

タイトルとURLをコピーしました