查看anaconda 版本
conda --version
conda 4.5.11
上一次为了解决这个问题曾经改过C:\Users\dell.condarc,增加过conda清华源,设置过SSL选项,并且还修改了C:\ProgramData\Anaconda3\Lib\site-packages\conda\models下的version.py文件,系统乱了,于是采用anaconda系统自带的卸载程序卸载了anaconda,确认python程序也卸载了,同时检查了C:\ProgramData\文件夹,确认该文件夹下没有anaconda文件夹,并且删除了C:\Users\dell.condarc文件。再次重新安装同一个版本的anaconda,重新排查问题。本次按问题出现顺序记录如下:
1、问题描述
运行conda install anaconda-clean命令
运行后界面提示
Solving environment: failed
CondaHTTPError: HTTP 000 CONNECTION FAILED for url <https://repo.anaconda.com/pkgs/r/noarch/repodata.json.bz2>
Elapsed: -
An HTTP error occurred when trying to retrieve this URL.
HTTP errors are often intermittent, and a simple retry will get you on your way.
If your current network has https://www.anaconda.com blocked, please file
a support request with your network engineering team.
SSLError(MaxRetryError('HTTPSConnectionPool(host=\'repo.anaconda.com\', port=443): Max retries exceeded with url: /pkgs/r/noarch/repodata.json.bz2 (Caused by SSLError(SSLError("bad handshake: Error([(\'SSL routines\', \'ssl3_get_server_certificate\', \'certificate verify failed\')])")))'))
参考链接
https://blog.csdn.net/qq_46161199/article/details/140462940
修复过程
怀疑是SSL证书问题导致的HTTPS连接失败,因此运行下面的代码,禁用了SSL证书验证
conda config --set ssl_verify no
原因分析
https协议比http协议多了SSL,TLS等验证和加密的阶段,可能是在与清华或者国外代码源进行SSL验证的过程中会出问题,因此需要关掉SSL验证,或者改用http协议。但是使用SSL验证是有助于保障传输过程的可靠性的。
2、问题描述
增加清华源后
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --set show_channel_urls yes
运行conda install anaconda-clean命令
出现问题
Solving environment: failed
CondaValueError: Malformed version string '~': invalid character(s).
参考链接:
https://blog.csdn.net/czyxiaowu/article/details/132479619
修复过程
使用如下命令删除之前的源(若之前没有在conda中进行换源操作,此步骤可以省去)
conda config --remove-key channels
3.问题描述
Solving environment: ...working... failed
Traceback (most recent call last):
File "C:\ProgramData\Anaconda3\lib\site-packages\conda\exceptions.py", line 819, in __call__
return func(*args, **kwargs)
File "C:\ProgramData\Anaconda3\lib\site-packages\conda\cli\main.py", line 78, in _main
exit_code = do_call(args, p)
File "C:\ProgramData\Anaconda3\lib\site-packages\conda\cli\conda_argparse.py", line 77, in do_call
exit_code = getattr(module, func_name)(args, parser)
File "C:\ProgramData\Anaconda3\lib\site-packages\conda\cli\main_install.py", line 11, in execute
install(args, parser, 'install')
File "C:\ProgramData\Anaconda3\lib\site-packages\conda\cli\install.py", line 235, in install
force_reinstall=context.force,
File "C:\ProgramData\Anaconda3\lib\site-packages\conda\core\solve.py", line 518, in solve_for_transaction
force_remove, force_reinstall)
File "C:\ProgramData\Anaconda3\lib\site-packages\conda\core\solve.py", line 451, in solve_for_diff
final_precs = self.solve_final_state(deps_modifier, prune, ignore_pinned, force_remove)
File "C:\ProgramData\Anaconda3\lib\site-packages\conda\core\solve.py", line 180, in solve_final_state
index, r = self._prepare(prepared_specs)
File "C:\ProgramData\Anaconda3\lib\site-packages\conda\core\solve.py", line 592, in _prepare
self.subdirs, prepared_specs)
File "C:\ProgramData\Anaconda3\lib\site-packages\conda\core\index.py", line 217, in get_reduced_index
push_record(record)
File "C:\ProgramData\Anaconda3\lib\site-packages\conda\core\index.py", line 198, in push_record
for _spec in record.combined_depends:
File "C:\ProgramData\Anaconda3\lib\site-packages\conda\models\records.py", line 273, in combined_depends
result = {ms.name: ms for ms in MatchSpec.merge(self.depends)}
File "C:\ProgramData\Anaconda3\lib\site-packages\conda\models\match_spec.py", line 411, in merge
match_specs = tuple(cls(s) for s in match_specs)
File "C:\ProgramData\Anaconda3\lib\site-packages\conda\models\match_spec.py", line 411, in <genexpr>
match_specs = tuple(cls(s) for s in match_specs)
File "C:\ProgramData\Anaconda3\lib\site-packages\conda\models\match_spec.py", line 43, in __call__
return super(MatchSpecType, cls).__call__(**parsed)
File "C:\ProgramData\Anaconda3\lib\site-packages\conda\models\match_spec.py", line 180, in __init__
self._match_components = self._build_components(**kwargs)
File "C:\ProgramData\Anaconda3\lib\site-packages\conda\models\match_spec.py", line 367, in _build_components
return frozendict(_make(key, value) for key, value in iteritems(kwargs))
File "C:\ProgramData\Anaconda3\lib\site-packages\conda\models\match_spec.py", line 367, in <genexpr>
return frozendict(_make(key, value) for key, value in iteritems(kwargs))
File "C:\ProgramData\Anaconda3\lib\site-packages\conda\models\match_spec.py", line 361, in _make
matcher = _implementors[field_name](value)
File "C:\ProgramData\Anaconda3\lib\site-packages\conda\models\version.py", line 429, in __new__
self.tup = tup = tuple(VersionSpec(s) for s in spec[1:])
File "C:\ProgramData\Anaconda3\lib\site-packages\conda\models\version.py", line 429, in <genexpr>
self.tup = tup = tuple(VersionSpec(s) for s in spec[1:])
File "C:\ProgramData\Anaconda3\lib\site-packages\conda\models\version.py", line 445, in __new__
raise InvalidVersionSpecError(spec)
conda.exceptions.InvalidVersionSpecError: Invalid version spec: =2.7
参考链接:
https://blog.csdn.net/zhyp011/article/details/121647889
https://github.com/conda/conda/issues/10618,这篇文章的大部分方法在中文网站中都能够找到,试过这篇文章中的方法,都失败了
修复过程
使用如下命令删除之前的源(若之前没有在conda中进行换源操作,此步骤可以省去)
conda版本低
解决方式:将~/anaconda3/lib/python3.7/site-packages/conda/models/version.py中这一行
version_relation_re = re.compile(r'(==|!=|<=|>=|<|>)(?![=<>!])(\S+)$')
改成
version_relation_re = re.compile(r'(==|!=|<=|>=|<|>|=)(?![=<>!])(\S+)$')
这两行
opdict = {'==': op.__eq__, '!=': op.__ne__, '<=': op.__le__,
'>=': op.__ge__, '<': op.__lt__, '>': op.__gt__}
```
改成
opdict = {‘==’: op.eq, ‘!=’: op.ne, ‘<=’: op.le, ‘=’: lambda x, y: x.startswith(y),‘>=’: op.ge, ‘<’: op.lt, ‘>’: op.gt}