какова цель звездочки * при использовании pip для установки пакетов python

avatar
knowledge of no knowledge
9 августа 2021 в 00:37
145
1
-1

Мое понимание python очень элементарное/общее, и я учусь чему-то по ходу дела.

Я недавно столкнулся с этой проблемой, когда пытался воспроизвести некоторый код:

!sudo pip install pytest*

Я получил эту ошибку: "ОШИБКА: Недопустимое требование: 'pytest*'"

Мне удалось установить необходимые пакеты, когда я выполнил команду без *

Есть ли цель для *? Не вызовет ли это каких-либо проблем?

(Я работаю над этой программой в Google Colab)

Источник
pavel
9 августа 2021 в 00:42
1

Я никогда не использовал звездочку с установкой pip. Я не знаю, для чего его можно использовать, но вам определенно не нужно просто устанавливать pytest. Просто иди без него. Возможно, это опечатка в коде, который вы пытаетесь воспроизвести.

Adam Smooch
9 августа 2021 в 00:43
1

pytest имеет несколько [под-]модулей?? например pytest-* соответствует (например) pytest, pytest-dev, pytest-foo и т. д.

knowledge of no knowledge
9 августа 2021 в 03:02
0

@AdamSmooch да, pytest имеет несколько подмодулей

Ответы (1)

avatar
Amir Charkhi
9 августа 2021 в 00:45
2

Условие сопоставления версий включает оператор сопоставления версий == и идентификатор версии.

Указанный идентификатор версии должен быть в стандартном формате, описанном в схеме версий, но в конце общедоступных идентификаторов версий допускается .*, как описано ниже. Вместо строгого сравнения можно запросить сопоставление префикса, добавив завершающий .* к идентификатору версии в предложении сопоставления версий. Это означает, что дополнительные конечные сегменты будут игнорироваться при определении того, соответствует ли идентификатор версии предложению. Если указанная версия включает только сегмент выпуска, то завершающие компоненты (или их отсутствие) в сегменте выпуска также игнорируются.

Например, для версии 1.1.post1 следующие предложения будут соответствовать или не соответствовать показанному:

== 1.1        # Not equal, so 1.1.post1 does not match clause
== 1.1.post1  # Equal, so 1.1.post1 matches clause
== 1.1.*      # Same prefix, so 1.1.post1 matches clause

См. здесь