pipenv: packaging.specifiers.InvalidSpecifier: Неверный спецификатор - PullRequest
0 голосов
/ 17 октября 2018

Я получаю эту ошибку при воссоздании 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'

1 Ответ

0 голосов
/ 17 октября 2018

Я публикую частичный ответ, поскольку при поиске точного сообщения об ошибке я получил только три результата в Google.

Из анализа кода и его изменения стало ясно, что существует как минимум двавиды спецификаторов - устаревший спецификатор, который может содержать практически все, и стандартный спецификатор, который соответствует PEP 440.

Когда зависимости блокируются, спецификаторы проверяются на соответствие регулярному выражению, чтобы увидеть, действительны ли ониили нет.Я видел, что они иногда проверяются на соответствие спецификатору legacy, а иногда - на нормальный.На этом этапе я прекратил поиск основной причины и решил, что будет лучше исправить мой код, чтобы он соответствовал обоим спецификаторам, поэтому я изменил его на ==0.5.2-dev1, что решило проблему.

...