安装的版本是Anaconda3-5.3.1-Linux-x86_64.sh,安装完之后的提示:
(base) zz@zz:Downloads$ anaconda-navigator &
[1] 29416
(base) zz@zz:Downloads$ 2021-05-15 04:15:15,674 - ERROR download_api._get_url:417
Expecting value: line 1 column 1 (char 0)
Traceback (most recent call last):
File "/home/zz/anaconda3/lib/python3.7/site-packages/anaconda_navigator/widgets/main_window.py", line 499, in setup
self.post_setup(conda_data=conda_data)
File "/home/zz/anaconda3/lib/python3.7/site-packages/anaconda_navigator/widgets/main_window.py", line 536, in post_setup
self.tab_home.setup(conda_data)
File "/home/zz/anaconda3/lib/python3.7/site-packages/anaconda_navigator/widgets/tabs/home.py", line 169, in setup
self.set_applications(applications, packages)
File "/home/zz/anaconda3/lib/python3.7/site-packages/anaconda_navigator/widgets/tabs/home.py", line 204, in set_applications
apps = self.api.process_apps(applications, prefix=self.current_prefix)
File "/home/zz/anaconda3/lib/python3.7/site-packages/anaconda_navigator/api/anaconda_api.py", line 903, in process_apps
versions=[vsdata.get('productVersion')],
AttributeError: 'str' object has no attribute 'get'
之后安装Anaconda3-2018.12-Linux-x86_64.sh,启动anaconda-navigator时可以正常启动,于是分别对比两个版本之间的文件:
File "/home/zz/anaconda3/lib/python3.7/site-packages/anaconda_navigator/api/anaconda_api.py"
可以启动的版本的anaconda_api.py:
875 # Add VSCode global app (if it does not exist as a conda package)
876 apps_vscode_enable = self.config.get('home', 'vscode_enable')
877
878 if not vscode_conda_package_exists:
879 if apps_vscode_enable and self.is_vscode_available():
880 vsdata = self.vscode_application_data() # Check vscode version
881 app = GLOBAL_VSCODE_APP
882 display_name = 'VS Code'
883
884 applications[app] = dict(
885 name=app,
886 display_name=display_name,
887 description=APPS_DESCRIPTIONS[app],
888 versions=[vsdata.get('productVersion')],
889 command=self._VSCODE_EXE,
890 image_path=image_paths[app],
891 needs_license=False,
892 non_conda=True,
893 )
894
895 return applications
而在5.3.1版本中没有对vscode的启动检查:
875 # Add VSCode global app (if it does not exist as a conda package)
876
877
878 if not vscode_conda_package_exists:
879 if self.is_vscode_available():
880 vsdata = self.vscode_application_data() # Check vscode version
881 app = GLOBAL_VSCODE_APP
882 display_name = 'VS Code'
883
884 applications[app] = dict(
885 name=app,
886 display_name=display_name,
887 description=APPS_DESCRIPTIONS[app],
888 versions=[vsdata.get('productVersion')],
889 command=self._VSCODE_EXE,
890 image_path=image_paths[app],
891 needs_license=False,
892 non_conda=True,
893 )
894
895 return applications
解决方法是参考启动正常版本的逻辑,在5.3.1版本的文件/home/zz/anaconda3/lib/python3.7/site-packages/anaconda_navigator/api/anaconda_api.py中添加检测vscode的代码就行了。
注意在启动正常的anaconda_api.py中搜索高亮搜索apps_vscode_enable,在init的地方也有处理,也需要一并添加到5.3.1版本的anaconda_api.py里面去:
174 # Call VSCode init
175 apps_vscode_enable = self.config.get('home', 'vscode_enable')
176 if apps_vscode_enable:
177 self.vscode_init()
178