LoginSignup
1
3

More than 1 year has passed since last update.

Anaconda Navigatorが起動しない時の対処方法のメモ(「AttributeError: 'str' object has no attribute 'get'」のエラー)

Posted at

以前、Windows7 のPCに Anaconda3 をインストールしていました。
久しぶりに Anaconda Navigator を起動したところ「Loading Application」が表示されたままで起動しませんでした。
その時に対処した方法をメモとして残します。

1. 原因調査

アイコンから起動すると、「Loading Application」が表示されたままで起動しなかったので、一旦タスクマネージャーから Python のプロセスを停止させます。

Anaconda Prompt からanaconda-navigatorコマンドで、Anaconda Navigatorを起動します。
するとanaconda_api.pyの811行目のversions=[vsdata.get('productVersion')]で「 AttributeError: 'str' object has no attribute 'get'」のエラーが発生していることがわかりました。

実行結果
(base) C:\Users\yasushi>anaconda-navigator
2022-04-23 00:50:52,872 - ERROR download_api._get_url:378
Expecting value: line 1 column 1 (char 0)

Traceback (most recent call last):
  File "C:\DK\Anaconda3\lib\site-packages\anaconda_navigator\widgets\main_window.py", line 484, in setup
    self.post_setup(conda_data=conda_data)
  File "C:\DK\Anaconda3\lib\site-packages\anaconda_navigator\widgets\main_window.py", line 521, in post_setup
    self.tab_home.setup(conda_data)
  File "C:\DK\Anaconda3\lib\site-packages\anaconda_navigator\widgets\tabs\home.py", line 169, in setup
    self.set_applications(applications, packages)
  File "C:\DK\Anaconda3\lib\site-packages\anaconda_navigator\widgets\tabs\home.py", line 204, in set_applications
    apps = self.api.process_apps(applications, prefix=self.current_prefix)
  File "C:\DK\Anaconda3\lib\site-packages\anaconda_navigator\api\anaconda_api.py", line 811, in process_apps
    versions=[vsdata.get('productVersion')],
AttributeError: 'str' object has no attribute 'get'

anaconda_api.pyの811行目付近を見てみると以下となっていました。

anaconda_api.py(803~818行目)
        # Add VSCode global app (if it does not exist as a conda package)
        if not vscode_conda_package_exists: 
            if self.is_vscode_available():
                vsdata = self.vscode_application_data()  # Check vscode version ← 806行目
                app = GLOBAL_VSCODE_APP
                applications[app] = dict(
                    name=app,
                    description=APPS_DESCRIPTIONS[app],
                    versions=[vsdata.get('productVersion')],   # ← 811行目
                    command=self._VSCODE_EXE,
                    image_path=image_paths[app],
                    needs_license=False,
                    non_conda=True,
                )

        return applications

811行目の
versions=[vsdata.get('productVersion')],
vsdatagetメソッドでエラーが発生していました。
vsdataは806行目の
vsdata = self.vscode_application_data()
で設定されています。

そこで、vscode_application_dataメソッドを検索してみました。
vscode_application_data付近のコードは以下となっています。

anaconda_api.py(964~974行目)
    def vscode_application_data(self):
        """Get vscode data from microsoft rest api."""
        data = {}
        url = self._VSCODE_ENDPOINT     # ←967行目
        if url:
            data = self._download_api.get_url(
                url=url,
                as_json=True,
                non_blocking=False,
            )
        return data

967行目でurl = self._VSCODE_ENDPOINTとurlが設定されているので、_VSCODE_ENDPOINTを検索してみました。

anaconda_api.py(918行目)
        self._VSCODE_ENDPOINT = VSCODE_ENDPOINT

VSCODE_ENDPOINTが設定されているので、VSCODE_ENDPOINTで検索してみます。

anaconda_api.py(902~905行目)
        VSCODE_ENDPOINT = (
            'https://vscode-update.azurewebsites.net/api/update'
            '/{}/stable/version'.format(VSCODE_SUBDIR)
        )

VSCODE_SUBDIRの値にはwin32-x64が設定されているため、VSCODE_ENDPOINT
https\://vscode-update.azurewebsites.net/api/update/win32-x64/stable/version
となっており、このURLで接続できないのが原因のようです。

2. 対策方法

https://vscode-update.azurewebsites.net/api/update/win32-x64/stable/version
の代わりに
https://update.code.visualstudio.com/api/update/win32-x64-user/stable/version
を使用するように修正します。

anaconda_api.pyの903、904行目を以下の通り修正します。

anaconda_api.py(903~904行目)
-            'https://vscode-update.azurewebsites.net/api/update'
-            '/{}/stable/version'.format(VSCODE_SUBDIR)
+           'https://update.code.visualstudio.com/api/update'
+           '/{}-user/stable/version'.format(VSCODE_SUBDIR)

anaconda-navigatorコマンドを実行したため、タスクマネージャーから Python のプロセスを停止させます。

アイコン(またはスタートメニュー)から Anaconda Navigator をクリックして起動し、正常に起動できることを確認します。

参考


以上

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3