Что же означает "тильда, равная (~ =)" в файле require.txt?
В requirements.txt
для библиотеки Python, которую я использую, одно из требований указано так:
mock-django~=0.6.10
Что значит ~=
имею в виду?
6 ответов
Это означает, что он выберет последнюю версию пакета, большую или равную 0.6.10, но все еще в версии 0.6.*, Поэтому он не будет загружать, например, 0.7.0. Это гарантирует, что вы получите исправления безопасности, но сохраните обратную совместимость, если сопровождающий пакета соблюдает семантическое управление версиями (в котором говорится, что критические изменения должны происходить только в основных версиях).
Или, как сказано в PEP 440:
Для данного идентификатора выпуска VN совместимое предложение выпуска приблизительно эквивалентно паре предложений сравнения:
>= V.N, == V.*
Добавляя к существующим ответам, я думаю, что очень важно также упомянуть, что хотя
~ = 0,6,10 означает> = 0,6,10, == 0,6.*
Следующее также верно
~ = 0,6 означает> = 0,6, == 0.*
Это упоминается в документации PEP .
Это спецификатор версии "совместимый релиз".
Это эквивалентно: mock-django >= 0.6.10, == 0.6.*
и является аккуратным способом сопоставления версии, которая должна быть совместимой. Говоря простым языком, это немного похоже на высказывание: "Мне нужна версия mock-django, которая, по крайней мере, такая же новая, как 0.6.10, но не настолько новая, чтобы она не была совместима с ней".
Если вы не уверены во всех этих вещах с номерами версий, быстрый взгляд на схему версий PEP440 поможет вам разобраться!
~= означает совместимую версию. Не менее 0,6,10 и выше (0,6.*).
Полное определение совместимого выпуска (включая до и после выпуска):
Пункт о совместимом выпуске состоит из оператора совместимого выпуска
~=
и идентификатор версии. Он соответствует любой версии-кандидату, которая, как ожидается, будет совместима с указанной версией.Указанный идентификатор версии должен быть в стандартном формате, описанном в Схема версии . Идентификаторы локальной версии НЕ разрешены в этом спецификаторе версии.
Для данного идентификатора выпуска
V.N
, предложение о совместимом выпуске примерно эквивалентно паре предложений сравнения:
>= V.N, == V.*
Этот оператор НЕ ДОЛЖЕН использоваться с одним номером версии сегмента, например
~=1
.Например, следующие группы предложений версии эквивалентны:
~= 2.2
>= 2.2, == 2.*
~= 1.4.5
>= 1.4.5, == 1.4.*
Если предварительный выпуск, выпуск после выпуска или выпуск для разработки назван в пункте о совместимом выпуске как
V.N.suffix
, то суффикс игнорируется при определении соответствия префикса:
~= 2.2.post3
>= 2.2.post3, == 2.*
~= 1.4.5a4
>= 1.4.5a4, == 1.4.*
Правила заполнения для сравнения сегментов выпуска означают, что предполагаемая степень прямой совместимости в предложении о совместимом выпуске может контролироваться путем добавления дополнительных нулей к спецификатору версии:
~= 2.2.0
>= 2.2.0, == 2.2.*
~= 1.4.5.0
>= 1.4.5.0, == 1.4.5.*
Предложение о совместимом выпуске состоит из оператора совместимого выпуска ~= и идентификатора версии. Он соответствует любой версии-кандидату, которая, как ожидается, будет совместима с указанной версией.
Вы можете прочитать больше здесь: https://www.python.org/dev/peps/pep-0440/