【问题标题】:How to fix a broken pip in anaconda without removing dependent packages?如何在不删除依赖包的情况下修复 anaconda 中损坏的 pip?
【发布时间】:2019-03-20 08:02:15
【问题描述】:

当我尝试使用 pip 安装某些东西时,我收到了消息

You are using pip version 18.0, however version 18.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.

不过,当我遵循这里的建议时,我得到:

使用缓存收集 pip https://files.pythonhosted.org/packages/c2/d7/90f34cb0d83a6c5631cf71dfe64cc1054598c843a92b400e55675cc2ac37/pip-18.1-py2.py3-none-any.whl 例外:回溯(最近一次通话最后一次):文件 "/home/.../miniconda3/envs/py3/lib/python3.6/site-packages/pip/_vendor/pkg_resources/init.py", 第 2862 行,在 _dep_map 返回 self.dep_map 文件 "/home/.../miniconda3/envs/py3/lib/python3.6/site-packages/pip/_vendor/pkg_resources/__init.py", 第 2669 行,在 getattr 中 raise AttributeError(attr) AttributeError: _DistInfoDistribution__dep_map

在处理上述异常的过程中,又发生了一个异常:

Traceback(最近一次调用最后一次):文件 "/home/.../miniconda3/envs/py3/lib/python3.6/site-packages/pip/_vendor/packaging/requirements.py", 第 93 行,在 init 中 req = REQUIREMENT.parseString(requirement_string) 文件 "/home/.../miniconda3/envs/py3/lib/python3.6/site-packages/pip/_vendor/pyparsing.py", 第 1632 行,在 parseString 中 提高 exc 文件“/home/.../miniconda3/envs/py3/lib/python3.6/site-packages/pip/_vendor/pyparsing.py”, 第 1622 行,在 parseString 中 loc,tokens = self._parse(instring,0)文件“/home/.../miniconda3/envs/py3/lib/python3.6/site-packages/pip/_vendor/pyparsing.py”, 第 1379 行,在 _parseNoCache 中 loc,tokens = self.parseImpl(instring,preloc,doActions)文件“/home/.../miniconda3/envs/py3/lib/python3.6/site-packages/pip/_vendor/pyparsing.py”, 第 3395 行,在 parseImpl 中 loc,exprtokens = e._parse(instring,loc,doActions)文件“/home/.../miniconda3/envs/py3/lib/python3.6/site-packages/pip/_vendor/pyparsing.py”, 第 1383 行,在 _parseNoCache 中 loc,tokens = self.parseImpl(instring,preloc,doActions)文件“/home/.../miniconda3/envs/py3/lib/python3.6/site-packages/pip/_vendor/pyparsing.py”, 第 3183 行,在 parseImpl 中 raise ParseException(instring, loc, self.errmsg, self) pip._vendor.pyparsing.ParseException: Expected stringEnd (at char 33), (行:1,列:34)

在处理上述异常的过程中,又发生了一个异常:

Traceback(最近一次调用最后一次):文件 "/home/.../miniconda3/envs/py3/lib/python3.6/site-packages/pip/_vendor/pkg_resources/init.py", 第 2942 行,在 init 中 super(Requirement, self).init(requirement_string) 文件“/home/.../miniconda3/envs/py3/lib/python3.6/site-packages/pip/_vendor/packaging/requirements .py", 第 97 行,在 init 中 requirements_string[e.loc:e.loc + 8])) pip._vendor.packaging.requirements.InvalidRequirement:无效 要求,在 "'; extra '" 处解析错误

在处理上述异常的过程中,又发生了一个异常:

Traceback(最近一次调用最后一次):文件 "/home/.../miniconda3/envs/py3/lib/python3.6/site-packages/pip/_internal/basecommand.py", 第 228 行,主要 status = self.run(options, args) 文件“/home/.../miniconda3/envs/py3/lib/python3.6/site-packages/pip/_internal/commands/install.py”, 第 318 行,运行中 self._warn_about_conflicts(to_install) 文件“/home/.../miniconda3/envs/py3/lib/python3.6/site-packages/pip/_internal/commands/install.py”, 第 442 行,在 _warn_about_conflicts package_set, _dep_info = check_install_conflicts(to_install) 文件 "/home/.../miniconda3/envs/py3/lib/python3.6/site-packages/pip/_internal/operations/check.py", 第 89 行,在 check_install_conflicts 中 state = create_package_set_from_installed() 文件“/home/.../miniconda3/envs/py3/lib/python3.6/site-packages/pip/_internal/operations/check.py”, 第 39 行,在 create_package_set_from_installed retval[name] = PackageDetails(dist.version, dist.requires()) 文件 "/home/.../miniconda3/envs/py3/lib/python3.6/site-packages/pip/_vendor/pkg_resources/init.py", 第 2613 行,需要 dm = self._dep_map 文件 "/home/.../miniconda3/envs/py3/lib/python3.6/site-packages/pip/_vendor/pkg_resources/init.py", 第 2864 行,在 _dep_map 中 self.dep_map = self._compute_dependencies() 文件“/home/.../miniconda3/envs/py3/lib/python3.6/site-packages/pip/_vendor/pkg_resources/__init.py ", 第 2874 行,在 _compute_dependencies reqs.extend(parse_requirements(req)) 文件“/home/.../miniconda3/envs/py3/lib/python3.6/site-packages/pip/_vendor/pkg_resources/init.py ", 第 2935 行,在 parse_requirements 中 产量需求(行)文件“/home/.../miniconda3/envs/py3/lib/python3.6/site-packages/pip/_vendor/pkg_resources/init.py”, 第 2944 行,在 init 中 raise RequirementParseError(str(e)) pip._vendor.pkg_resources.RequirementParseError: 无效的要求, 在 "'; extra '" 处解析错误,但是您使用的是 pip 版本 18.0 版本 18.1 可用。您应该考虑通过 'pip 安装 --upgrade pip' 命令。

我尝试了conda install pip,但没有帮助。当我尝试conda remove pip 时,它想删除所有依赖包,这不是我真正想做的。知道如何在不破坏我的环境的情况下修复它吗?

【问题讨论】:

  • conda remove --force 仅删除该包而不涉及依赖项,如conda remove --help 中所述

标签: pip conda miniconda


【解决方案1】:

这个特殊问题是由testpath 引起的。我用pip remove testpath 删除了那个包,然后我可以更新 pip 而不会出错。不幸的是,错误消息并没有将我指向那里。我在 GitHub 问题页面上找到了这个解决方案。

https://github.com/conda-forge/testpath-feedstock/issues/7

【讨论】:

    猜你喜欢
    • 2018-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-03
    • 2020-05-07
    • 2021-09-21
    相关资源
    最近更新 更多