【问题标题】:pipenv: packaging.specifiers.InvalidSpecifier: Invalid specifierpipenv:packaging.specifiers.InvalidSpecifier:无效的说明符
【发布时间】:2018-10-17 12:51:27
【问题描述】:

重新创建 Pipfile.lock 时出现此错误:

packaging.specifiers.InvalidSpecifier: Invalid specifier '==0.5.2-auto'

我认为它与-auto 后缀有关,但由于某种原因它可以在不同的计算机上运行。

回溯似乎由于某种原因被截断,这是我在控制台中看到的所有内容:

pipenv/vendor/requirementslib/models/requirements.py", line 1008, in get_version
    return parse_version(self.get_specifier().version)
  File "/home/johneye/.local/share/virtualenvs/python-microservice-scaffolding-ylP1urgf/lib/python3.6/site-packages/pipenv/vendor/requirementslib/models/requirements.py", line 1005, in get_specifier
    return Specifier(self.specifiers)
  File "/home/johneye/.local/share/virtualenvs/python-microservice-scaffolding-ylP1urgf/lib/python3.6/site-packages/pipenv/vendor/packaging/specifiers.py", line 85, in __init__
    raise InvalidSpecifier("Invalid specifier: '{0}'".format(spec))
packaging.specifiers.InvalidSpecifier: Invalid specifier '==0.5.2-auto'

【问题讨论】:

    标签: python pipenv pipfile


    【解决方案1】:

    我发布了部分答案,因为在查找准确的错误消息时,我在 Google 上只得到了三个结果。

    通过查看和修改代码,很明显至少有两种说明符 - 一种可以包含几乎任何内容的旧说明符和一种符合 PEP 440 的标准说明符。

    当依赖关系被锁定时,会根据正则表达式检查说明符以查看它们是否有效。我看到它们有时会根据遗留说明符进行检查,有时会根据正常说明符进行检查。此时,我放弃了对根本原因的搜索,并决定修复我的代码以符合这两个说明符会更好,因此我将其更改为==0.5.2-dev1,从而解决了问题。

    【讨论】:

      猜你喜欢
      • 2021-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多