代码之家  ›  专栏  ›  技术社区  ›  JohnEye vikx01

pipenv:包装。说明符。InvalidSpecifier:无效的说明符

  •  0
  • JohnEye vikx01  · 技术社区  · 6 年前

    我在重新创建Pipfile时遇到此错误。锁定:

    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'
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   JohnEye vikx01    6 年前

    我发布了一个部分答案,因为我在谷歌上搜索准确的错误信息时只得到了三个结果。

    通过查看代码并对其进行修改,可以清楚地看到至少有两种类型的说明符—一种是可以包含几乎任何内容的遗留说明符,另一种是符合PEP 440的标准说明符。

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