InvalidVersionSpecError: Invalid version spec: =2.7

查看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}


    





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值