以前、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行目付近を見てみると以下となっていました。
# 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')],
のvsdata
のget
メソッドでエラーが発生していました。
vsdata
は806行目の
vsdata = self.vscode_application_data()
で設定されています。
そこで、vscode_application_data
メソッドを検索してみました。
vscode_application_data
付近のコードは以下となっています。
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
を検索してみました。
self._VSCODE_ENDPOINT = VSCODE_ENDPOINT
VSCODE_ENDPOINT
が設定されているので、VSCODE_ENDPOINT
で検索してみます。
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行目を以下の通り修正します。
- '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 をクリックして起動し、正常に起動できることを確認します。
参考
- Anaconda Navigatorがアイコンから起動しない?
- Anaconda Navigator won't launch, download_api error (Windows 10) - Stack Overflow
- Anacondaフラッシュバック問題 AttributeError: 'str' オブジェクトには 'get' 属性がない - BinaryDevelop
- Using IA's REST API to get latest version - Ignition - Inductive Automation Forum
以上