公司电脑安装的Anaconda Navigator1.9.12, python 3.8.3. 由于Anaconda Navigator 没有selenium的包,所以通过pip 安装了selenium 4.0.1. 安装过程中报与requests的版本不兼容,所以又通过pip 升级了urllib3, requests到最新版本。完成后再也无法打开Anaconda Navigator. 通过prompt运行Anaconda Navigator 报错。
(base) C:\Users\jch507>anaconda navigator
C:\Program Files\Anaconda3-2020.07-Windows-x86_64\lib\site-packages\requests\__init__.py:89: RequestsDependencyWarning: urllib3 (2.0.3) or chardet (3.0.4) doesn't match a supported version!
warnings.warn("urllib3 ({}) or chardet ({}) doesn't match a supported "
Traceback (most recent call last):
File "C:\Program Files\Anaconda3-2020.07-Windows-x86_64\Scripts\anaconda-script.py", line 6, in <module>
from binstar_client.scripts.cli import main
File "C:\Program Files\Anaconda3-2020.07-Windows-x86_64\lib\site-packages\binstar_client\__init__.py", line 15, in <module>
from .requests_ext import stream_multipart, NullAuth
File "C:\Program Files\Anaconda3-2020.07-Windows-x86_64\lib\site-packages\binstar_client\requests_ext.py", line 11, in <module>
from requests.packages.urllib3.filepost import choose_boundary, iter_fields
ImportError: cannot import name 'iter_fields' from 'urllib3.filepost' (C:\Users\jch507\AppData\Roaming\Python\Python38\site-packages\urllib3\filepost.py)
一开始盯着最后import error的问题查询没啥结果,之后才注意到urllib3 (2.0.3) or chardet (3.0.4) doesn't match a supported version!这个错误信息。研究后发现 通过pip升级的包安装在了python的sitepackages下面而非anaconda的。Anaconda Navigator启动的时候引用了python下最新版本的urllib3,由于版本不兼容造成的启动失败。在Anaconda的sitepackages 目录下面发现它自带的urllib3的文件都还存在。那么解决思路就清晰了,卸载通过pip 升级的requests, urllib3的包。让Anaconda Navigator启动时引用会他自己sitepackages下的包就可以了。
解决办法:运行如下命令
pip --uninstall requests
pip --uninstall urllib3
完成后Anaconda Navigator顺利启动。
此方案可以融会贯通,因为每个人遇到的不兼容的包可能不同。总结就是通过PIP安装的包可能与anaconda navigator需要的不兼容。而且pip安装的包放在了python的目录下引用的时候优先级更高。造成anacond navigator启动失败。只要卸载了不兼容的包即可解决问题。