1

重新创建 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'
4

1 回答 1

1

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

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

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

于 2018-10-17T12:51:27.173 回答