Anaconda Navigator が起動しない問題【Python】

Python

症状と原因

久しぶりにMacでAnaconda Navigatorを起動したら「Loading applications」と表示されたまま、動かず起動できなくなっていた。(Mac, Windowsは関係なく時々起こる問題のようです。)

Anaconda Navigaor をアップデートすれば起動できたという人もいるようだが、真似してターミナル で
 conda update anaconda-navigator
 anaconda-navigator –reset
などと入力しても、そもそもアップデートすら硬直して終わらない。

原因を探るために、ターミナルで

anaconda-navigator

と入力し、ターミナルから起動してみると

  File "/Users/(ユーザー名)/anaconda3/lib/python3.7/site-packages/anaconda_navigator/api/anaconda_api.py", line 888, in process_apps
    versions=[vsdata.get('productVersion')],
AttributeError: 'str' object has no attribute 'get'

とエラー文が表示される。どうもanaconda_api.pyというファイルの888行目でエラーが起きている。

確かにエラー文にある「anaconda3/lib/python3.7/site-packages/anaconda_navigator/api/anaconda_api.py」というファイルで
888行目を見てみると
 versions=[vsdata.get(‘productVersion’)]
とある。

色々調べてみると、なんらかの問題でvscode(Visual Studio Code)のwebサイトからバージョン情報を取得できなくなっているのが原因だそう。

実際に、anaconda_api.pyファイル内で「vsdata」の定義などを調べてみると、特定のurlから情報を取得するように書かれているのだが、そのurl先に問題が発生していることが分かる。詳しくは補足で後述する。

対策・解決法

問題を回避するには、エラー文にある anaconda_api.pyファイルの 888行目のコード(Anacondaのバージョンによってこの888という行数は変わる)

versions=[vsdata.get('productVersion')], 

をコメントアウトして、

versions=["1b8e8302e405050205e69b59abb3559592bb9e60"],

と書き換える。

参考1:Anaconda Navigator won’t launch, download_api error

参考2:Anacondaフラッシュバック問題 AttributeError: ‘str’ オブジェクトには ‘get’ 属性がない

最適な方法ではないという人もいるが、こうすることで、vscodeから更新を取得しないようにできるらしい。少なくとも動くようにはなる。

おそらく、きちんと問題を修正するには、AnacondaあるいはAnaconda Navigatorをアンインストールして再インストールするべきなのかもしれない。

私の環境ではNavigatorのアップデートは動かなかったし、Navigatorの再インストールだけで上手くいくかはやってないので分からない。Anacondaを丸々インストールし直すとなると、tensorflowなどの後からインストールしたモジュールも入れ直さないといけなくなりそうなので、大変そう。

補足:vsdataの原因究明についての詳細

888行目の
 versions=[vsdata.get(‘productVersion’)],
が問題の原因だったが、vsdataの定義を探ると原因が分かってくる。
以下の参考サイトで詳しく解説されている。

参考:Anaconda Navigatorが起動しない時の対処方法のメモ

ファイル内のコードを辿ってみると

  • 「vsdata」は 「self.vscode_application_data」(880行目)で設定されている
  • 文字列検索してvscode_application_dataの定義文を調べる
    → urlが「VSCODE_ENDPOINT」と関連づけされている
  • VSCODE_ENDPOINTは以下のurlに紐づいている
VSCODE_ENDPOINT = (
            'https://update.code.visualstudio.com/api/update'
            '/{}/stable/version'.format(VSCODE_SUBDIR)

実際にこのurlにつないでみると(pythonの構文でformatがあるのでそこは{}に代入)、
確かに
「Cannot GET /api/update/VSCODE_SUBDIR/stable/version’」
と出てくる。上手くバージョンが取得できていない。

その他の参考

Anaconda Navigatorが起動しないとき
↑Navigatorのリセットやアップデートの仕方を紹介している。ここの方は丸ごとAnacondaをインストールし直したそう。

コメント

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