Jupyter Notebookが起動しないと思ったらAnaconda環境が壊れていた

2019年4月12日

pipで新しくパッケージを入れたら、conda環境が壊れてしまったようです。本記事ではその発端と原因究明・確認方法、解決策を記録しておきます。

この事故は起きた時の環境は以下の通りです。OSはwindows 10。

conda version : 4.6.8
conda-build version : not installed
python version : 3.7.2.final.0
OS:Windows 10 64 bit

事の発端

ある日いつもどおりJupyter Notebookを起動したら、ウィンドウがパッと出て、一瞬で消えた。やり直してもパソコン再起動しても一向に変わらない…。

直前に入れたpipで新しくパッケージに入れていたので、とりあえず全部アップデートすれば良いだろうと思って、Anaconda promptから
・conda自体アップデート( conda update -n base conda)
・インストールした全パッケージアップデート(conda update --all)
を試してみた。

すると以下の表示が…

Solving environment: / WARNING conda.common.logic:get_sat_solver_cls(278): Could not run SAT solver through interface 'pycosat'.
failed

CondaDependencyError: Cannot run solver. No functioning SAT implementations available.

どうやら「SAT solver」なるものがうまく動けていない模様。

公式ページのcondaの仕組みについての記事を参照すると、condaはSAT solverを使用して「その環境にある全パッケージのメタデータを収集し、それらの依存関係がちゃんと満たされているか」を検証しているみたいです。

環境内のパッケージを把握できない状態にある、ということは環境に異変が起きてしまっていると思われます。

確認方法

結論としてcondaとpipの衝突が原因でした。原因については以下のサイトを大変参考にさせて頂きました。

condaとpip:混ぜるな危険

“Anaconda下でpipを使うと予期せず環境が破壊され、最悪の場合Anaconda自体の再インストールが必要になる。"
既に構築済みの自分のconda環境でpipとcondaの衝突があるか確かめたい場合は、conda listを実行する。"

自身の環境をconda listで確認してみると、確かにいくつか重複しているものがあります(画像中で白地で強調部分してます)。

condaとpipでインストールしたパッケージの重複なお、一番右側に「pypi」と表示されているのがpip installによるもの、無印のがconda installによるものです。

これがpipによってインストールしたものと衝突し、SAT solverが実行できなくなった結果、conda環境自体が動けなくなってしまったのかもしれません。

Anacondaの再インストール

Anaconda promptが動かないのでAnaconda-Cleanを使ったアンインストールはできません。

[コントロールパネル]の[プログラムのアンインストール]から削除し、再度インストールしなおします。詳細は以下にもまとめました。


conda installとpip installの違いについても調べましたので、ご参考にしていただければ幸いです。