博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Anaconda闪退的问题AttributeError: 'str' object has no attribute 'get'
阅读量:4182 次
发布时间:2019-05-26

本文共 4446 字,大约阅读时间需要 14 分钟。

今天不知道什么原因, 突然anaconda-navigator界面无法启动,闪退,用prompt打开,报错如下,

anaconda-navigator

2019-03-01 20:27:19,492 - ERROR download_api._get_url:416
Expecting value: line 1 column 1 (char 0)

Traceback (most recent call last):

  File "d:\Anaconda3\lib\site-packages\anaconda_navigator\widgets\main_window.py", line 539, in setup
    self.post_setup(conda_data=conda_data)
  File "d:\Anaconda3\lib\site-packages\anaconda_navigator\widgets\main_window.py", line 576, in post_setup
    self.tab_home.setup(conda_data)
  File "d:\Anaconda3\lib\site-packages\anaconda_navigator\widgets\tabs\home.py", line 169, in setup
    self.set_applications(applications, packages)
  File "d:\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 "d:\Anaconda3\lib\site-packages\anaconda_navigator\api\anaconda_api.py", line 888, in process_apps
    versions=[vsdata.get('productVersion')],
AttributeError: 'str' object has no attribute 'get'

这可真是奇了,于是打开原码看了一下,vsdata的version没有信息,那么vsdata此时应该是无法访问的,因为出问题了,

d:\Anaconda3\lib\site-packages\anaconda_navigator\api\anaconda_api.py", 第888行写的是,

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, 并添加了一句打印代码,如下,

def vscode_application_data(self):        """Get vscode data from microsoft rest api."""        data = {}        url = self._VSCODE_ENDPOINT        print("vscode endpoint url:", url) //本人添加的调试代码        if url:            data = self._download_api.get_url(                url=url,                as_json=True,                non_blocking=False,            )        return data

找印结果如下,

vscode endpoint url: https://update.code.visualstudio.com/api/update/win32-x64-user/stable/version

我查了一下,这个url此时是无效的,也就是说vscode的官方网站今天有问题,导致vscode无法访问用不了。

总结原因:

是无法访问vscode网站导致anaconda-navigator不能启动,(不能在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还是不能出现在图形界面中,先这么这吧!真不喜欢这些抽风的问题,费时间!

那么这时如何在特定环境中启动vscode呢,比如我要启动的环境名称是torch, 那么,

Anaconda Prompt ===>>> conda activate torch ===>>> code (启动vscode, 一般安装目录能自动识别,如果找不到就搜索一下吧)

进入界面后,启动vscode的terminal, 同样 conda activate torch一下,注意,” conda activate torch“这一句写了两次,实际上你只需要运行一次即可,要么在Anaconda Prompt中,要么在vscode的terminal中,效果是一样的。

唯一不爽的是,你不能在anacona-navigator的图形界面中启动vscode。

后续正常情况

当然,如果第二天发现vscode官网可以正常访问了,你把注释的代码改回了就是了,一切都会恢复正常!!!

此时如果把那个能访问的vsdata打印出来,就是

vscode endpoint 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问题,那么可以把上面代码中的version信息改一下,这时vscode不再查检更新情况,

把versions=[vsdata.get('productVersion')],改成versions=["1b8e8302e405050205e69b59abb3559592bb9e60"],

 

转载地址:http://bhwoi.baihongyu.com/

你可能感兴趣的文章
Ubuntu Navicat for MySQL安装以及破解方案
查看>>
在C++中如何实现模板函数的外部调用
查看>>
HTML5学习之——HTML 5 应用程序缓存
查看>>
HTML5学习之——HTML 5 服务器发送事件
查看>>
SVG学习之——HTML 页面中的 SVG
查看>>
mysql中用命令行复制表结构的方法
查看>>
hbase shell出现ERROR: org.apache.hadoop.hbase.ipc.ServerNotRunningYetException
查看>>
解决Rhythmbox乱码
查看>>
豆瓣爱问共享资料插件发布啦
查看>>
kermit的安装和配置
查看>>
linux中cat命令使用详解
查看>>
java中的异常机制
查看>>
商务智能-基本方法-数据钻取
查看>>
C++程序员技术需求规划(发展方向)
查看>>
JNI
查看>>
在可执行jar中动态载入第三方jar(转贴)
查看>>
考虑体积重量的01背包问题—基于遗传算法
查看>>
K-means 聚类算法
查看>>
带约束的K-means聚类算法
查看>>
约束优化方法
查看>>