В requirements.txt, что означает тильда (~ =)?

В файле requirements.txt для библиотеки Python, которую я использую, одно из требований указано как:

mock-django~=0.6.10

Что означает ~= означает?

Ответ 1

Это означает, что он выберет последнюю версию пакета, большую или равную 0,6.10, но все еще в версии 0.6. *, Поэтому он не будет загружать 0.7.0, например. Это гарантирует, что вы получите исправления безопасности, но сохраните обратную совместимость, если сторонник пакета уважает семантическое управление версиями (в котором говорится, что нарушение изменений должно происходить только в основных версиях).

Или, как сказано в PEP 440:

Для данного идентификатора выпуска VN совместимое предложение release приблизительно эквивалентно парам предложений сравнения:

>= VN, == V.*

Ответ 2

Это спецификатор версии совместимого выпуска.

Это эквивалентно: mock-django >= 0.6.10, == 0.6.* И является опрятным способом сопоставления версии, которая, как ожидается, будет совместимой. На простом английском языке это немного похоже на высказывание: "Мне нужна версия mock-django, которая по крайней мере такая же новая, как 0,6.10, но не настолько новая, что она не совместима с ней".

Если вы не уверены во всем этом номере версии, быстрый взгляд на схему PEP440 должен сортировать вас!

Ответ 3

~ = означает совместимую версию. Не менее 0.6.10 и выше (0.6. *).

Ответ 4

Согласованное предложение release состоит из совместимого оператора release ~ = и идентификатора версии. Он соответствует любой версии кандидата, которая, как ожидается, будет совместима с указанной версией.

Вы можете прочитать здесь: https://www.python.org/dev/peps/pep-0440/#compatible-release