condaでPackagesNotFoundErrorが発生したときの対処方法

プログラミング・数学・英会話
スポンサーリンク

Anacondaのcondaコマンドを使って複数のpythonバージョンやライブラリバージョンを開発単位で分けている方も多いのではないでしょうか?

そんなときにたまに困るのが、conda createやconda installをしようとしたときに特定のpythonのバージョンの環境の作成に失敗することです

以下のようにPackagesNotFoundError: The following packages are not available from current channels:というエラーが出たときです

$ conda create -n py36 python=3.6
Collecting package metadata (current_repodata.json): done
Solving environment: failed with repodata from current_repodata.json, will retry with next repodata source.
Collecting package metadata (repodata.json): done
Solving environment: failed

PackagesNotFoundError: The following packages are not available from current channels:

  - python=3.6

Current channels:

  - https://repo.anaconda.com/pkgs/main/linux-64
  - https://repo.anaconda.com/pkgs/main/noarch
  - https://repo.anaconda.com/pkgs/r/linux-64
  - https://repo.anaconda.com/pkgs/r/noarch

本記事ではそういったエラーになって特定のpythonバージョンのconda環境が作れないときやライブラリのインストールができないときの対処方法について説明します

とりあえず対処方法だけ知れれば良い!という方と仕組みもしっかり理解したい方がいらっしゃると思いますので下記の2つを順に解説していきます

  1. 対処方法(とりあえず手順知りたい方向け)
  2. なぜ見つからないときがあるのか?(仕組みを理解したい方向け)
スポンサーリンク

対処方法

一時的な対処方法

では、さっそく対処方法からです

conda createとき

$ conda create -n py36 -c conda-forge python=3.6

conda installのとき

$ conda install -c conda-forge [ライブラリ名]

これだけです!

恒久的な対処方法

毎回オプションで指定するのが面倒な方は下記の方法がおすすめです

この節で紹介する内容の仕組みや用語の解説は次の「なぜ見つからないときがあるのか?」で説明するのでご安心ください!

Packageを問い合わせるリポジトリリストの末尾に追加する

この方法で追加すると最後にこのリポジトリに対してPackageを問い合わせます

$ conda config --append channels conda-forge

※conda-forgeは一つのリポジトリにすぎないのでconda-forgeの部分に別のリポジトリを指定することもできます

その他の候補としては、たとえば下記など

  • https://conda.binstar.org/menpo

Packageを問い合わせるリポジトリリストの最初に追加する

この方法で追加すると最初にこのリポジトリに対してPackageを問い合わせます

$ conda config --add channels conda-forge

追加したリポジトリを削除する方法

この方法で追加すると最初にこのリポジトリに対してPackageを問い合わせます

$ conda config --remove channels conda-forge

その他のライブラリインストール追儀

なぜ見つからないときがあるのか?

condaはconda createで環境をつくるときにchannelsとして指定されているリポジトリをみにいきます

リポジトリはいろんなPackageが登録されている倉庫のようなものだと思ってください

下記のようなイメージです

conda
conda

python 3.6のPackageをください!

リポジトリ
リポジトリ

うちにはないよ!

他をあたってくれ!

ですので、問合せするリポジトリをchannelとして追加してあげれば良いんです

Amazon倉庫には在庫がないけど、他のお店には在庫があるのでそこに発注するみたいな感じです

今回はconda-forgeというリポジトリを追加することでpython 3.6の環境を扱えるようになりました

ちなみに下記のコマンドを実行すると登録されているchannelの一覧が見ることができます

$ conda config --get channels
--add channels 'conda-forge'   
--add channels 'defaults'   

defaultだけのときは何も表示されないことがあります

最後に

いざ開発を頑張ろう!というときに環境周りの問題で止まってしまうのは嫌ですよね・・・

そういう方を少しでも減らせるように私が開発などをやるうえで困ったことなどについては、本ブログで解決方法を紹介していくつもりです

それ以外にも興味のある技術などについても紹介していますので、よろしければブックマークして定期的に見に来てくれれば嬉しいです!

コメント

Copied title and URL