Anacondaフラッシュバック問題 AttributeError: 'str' オブジェクトには 'get' 属性がない
今日、なぜか突然anaconda-navigatorのインターフェースが起動せず、フェードアウトしてしまい、プロンプトで開くと以下のようなエラーが発生します。
アナコンダナビゲーター
2019-03-01 20:27:19,492 - ERROR download_api._get_url:416
期待値:1行目1列目(char 0)
トレースバック (最も最近の呼び出し):
ファイル "d:\Anaconda3⇄site-packages⇄anaconda_navigator⇄widgets_main_window.py", 行 539, in setup
self.post_setup(conda_data=conda_data)
File "d:\Anaconda3_lib⇄PackagesⒸAnaconda_navigatorⒸWidgetsⒸMain_window.py", line 576, in post_setup
self.tab_home.setup(conda_data)を実行します。
File "d:\Anaconda3_lib⇄Packages⇄anaconda_navigatorⒸWidgetsⒸtabsⒸhome.py", line 169, in setup
self.set_applications(アプリケーション、パッケージ)
ファイル "d:\Anaconda3_lib⇄Packages⇄anaconda_navigatorⒸWidgetsⒸhome.py", 行 204, in set_applications
apps = self.api.process_apps(applications, prefix=self.current_prefix)
ファイル "d:\Anaconda3﹑Site-packages﹑anaconda_navigator.py", line 888, in process_apps
versions=[vsdata.get('productVersion')]です。
AttributeError: 'str' オブジェクトには 'get' という属性がありません。
これは本当におかしいので、元のコードを開いて見てみると、vsdataのバージョンに関する情報がないので、この時点ではvsdataは何か問題があってアクセスできないはずであり
d:\Anaconda3lib⇄site-packages⇄anaconda_navigatorapi.py", line 888 reads
if not vscode_conda_package_exists:
if apps_vscode_enable and self.is_vscode_available():
vsdata = self.vscode_application_data() # Check vscode version
app = GLOBAL_VSCODE_APP
display_name = 'VS Code'
# print("vsdata", vsdata)
applications[app] = dict(
name=app,
display_name=display_name,
description=APPS_DESCRIPTIONS[app],
versions=[vsdata.get('productVersion')],
command=self._VSCODE_EXE,
image_path=image_paths[app],
needs_license=False,
non_conda=True,
)
そして、この行に沿ってvscode_dataを調べ、次のようにプリントコードを1行追加しました。
def vscode_application_data(self):
"""Get vscode data from microsoft rest api."""
data = {}
url = self._VSCODE_ENDPOINT
print("vscode endpoint url:", url) //I added the debug code
if url:
data = self._download_api.get_url(
url=url,
as_json=True,
non_blocking=False,
)
return data
プリントを求めた結果は次のようになります。
vscode エンドポイント url: https://update.code.visualstudio.com/api/update/win32-x64-user/stable/version
確認したところ、このURLは現時点では無効で、vscodeの公式サイトに本日問題が発生し、vscodeにアクセスできず、使用できない状態になっているということです。
原因をまとめると
anaconda-navigatorが起動しない原因は、vscodeサイトにアクセスできないことです(anaconda-navigatorインターフェイスのvscodeアイコンを起動できない)。
回避策
具体的にはどうすればいいかわからなかったので、単純にコメントアウトした段落に
"""
if not vscode_conda_package_exists:
if apps_vscode_enable and self.is_vscode_available():
vsdata = self.vscode_application_data() # Check vscode version
app = GLOBAL_VSCODE_APP
display_name = 'VS Code'
# print("vsdata", vsdata)
applications[app] = dict(
name=app,
display_name=display_name,
description=APPS_DESCRIPTIONS[app],
versions=[vsdata.get('productVersion')],
command=self._VSCODE_EXE,
image_path=image_paths[app],
needs_license=False,
non_conda=True,
)
"""
さて、ここで問題です!anacondaは正常に起動しますが、vscodeはまだGUIに表示されないので、このままにしておきましょう!。こういうギスギスした質問は嫌いです、時間がかかる!
では、特定の環境でvscodeを起動するにはどうすればいいかというと、例えばtorchという環境を起動したい場合、次のようにします。
Anaconda Prompt ===>>> conda activate torch ===>>> code (vscodeの起動、通常はインストールディレクトリが自動的に認識されますが、見つからない場合は検索してください。)
インターフェースに入った後、vscode のターミナルを起動し、conda activate torch も実行します。"conda activate torch" というフレーズが二度書かれていますが、実際には Anaconda Prompt でも vscode のターミナルでも一度だけ実行すれば効果は同じです。
唯一残念なのは、anacona-navigatorのGUIでvscodeを起動できないことです。
続いて、通常時の様子
もちろん、次の日にvscodeのウェブサイトにアクセスできることがわかったら、コメントしたコードをうまく元に戻せば、すべてが元通りになります!!!!
この時点で、アクセス可能なvsdataをプリントアウトすると、以下のようになります。
vscode エンドポイント url: https://update.code.visualstudio.com/api/update/win32-x64-user/stable/version
vsdata {'url': 'https://vscode.cdn.azure.cn/stable/1b8e8302e405050205e69b59abb3559592bb9e60/VSCodeUserSetup-x64-1.31.1.exe', 'name': ' 1.31.1', 'version': '1b8e8302e405050205e69b59abb3559592bb9e60', 'productVersion': '1.31.1', 'hash': ' 43c2aecb9e1d65759dbe11ee5cb62030a2d06567', 'timestamp': 1549938223872, 'sha256hash': ' f213ab6f6646bd80b0606e3d52db9219eb539f586779720e52ed12b9d9732fb1', 'supportsFastUpdate': True} です。
vscodeのネットワーク問題を回避したい場合は、上記のコードのバージョン情報を変更し、vscodeが更新をチェックしないようにすることができます。
Change the
versions=[vsdata.get('productVersion')],
to
versions=["1b8e8302e405050205e69b59abb3559592bb9e60"],
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
ハートビート・エフェクトのためのHTML+CSS
-
HTML ホテル フォームによるフィルタリング
-
HTML+cssのボックスモデル例(円、半円など)「border-radius」使いやすい
-
HTMLテーブルのテーブル分割とマージ(colspan, rowspan)
-
ランダム・ネームドロッパーを実装するためのhtmlサンプルコード
-
Html階層型ボックスシャドウ効果サンプルコード
-
QQの一時的なダイアログボックスをポップアップし、友人を追加せずにオンラインで話す効果を達成する方法
-
sublime / vscodeショートカットHTMLコード生成の実装
-
HTMLページを縮小した後にスクロールバーを表示するサンプルコード
-
html のリストボックス、テキストフィールド、ファイルフィールドのコード例