Що означає в типі.txt те, що тильда дорівнює (~ =)?


100

У requirements.txtбібліотеці для Python, яку я використовую, вказана одна з вимог, наприклад:

mock-django~=0.6.10

Що ~=означає?

Відповіді:


119

Це означає, що він вибере останню версію пакету, що перевищує або дорівнює 0,6.10, але все-таки у версії 0.6. *, Тому, наприклад, не завантажить 0.7.0. Це гарантує, що ви отримаєте виправлення безпеки, але збережете зворотну сумісність, якщо супровідник пакету поважає семантичне керування версіями (яке говорить, що порушення змін має відбуватися лише у основних версіях).

Або, як сказано в PEP 440:

Для даного ідентифікатора випуску VN речення сумісного випуску приблизно еквівалентно парі речень порівняння:

>= V.N, == V.*


3
"приблизно"? Чи існують винятки з цієї еквівалентності?
AXO

1
@AXO AFAIK, є тонкощі з відповідністю версії до / після випуску. Здебільшого це не впливає на базове використання, здебільшого обмежене основними / другорядними версіями.
Максим Лорант

12

Це специфікатор версії "сумісного випуску" .

Це еквівалентно:, mock-django >= 0.6.10, == 0.6.*і є акуратним способом узгодження версії, яка, як очікується, буде сумісною. Простою англійською мовою це трохи схоже на те, щоб сказати: "Мені потрібна версія mock-django, яка є принаймні такою ж, як 0.6.10, але не настільки новою, щоб не сумісна з нею".

Якщо ви не впевнені у всіх цих версіях номерів версій, швидкий огляд схеми версії PEP440 повинен розібратися з вами!



3

Застереження про сумісний випуск складається з сумісного оператора випуску ~ = та ідентифікатора версії. Він відповідає будь-якій кандидатній версії, яка, як очікується, буде сумісною із зазначеною версією.

Детальніше ви можете прочитати тут: https://www.python.org/dev/peps/pep-0440/#compatible-release

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.