Co oznacza tylda równa się (~ =) w Requirements.txt?


109

W requirements.txtprzypadku biblioteki Pythona, której używam, określono jedno z wymagań, na przykład:

mock-django~=0.6.10

Co to ~=znaczy?

Odpowiedzi:


126

Oznacza to, że wybierze najnowszą wersję pakietu, wyższą lub równą 0.6.10, ale nadal w wersji 0.6. *, Więc nie pobierze na przykład 0.7.0. Zapewnia uzyskanie poprawek bezpieczeństwa, ale zachowuje zgodność wsteczną, jeśli opiekun pakietu przestrzega semantycznej wersji (która stwierdza, że ​​istotne zmiany powinny wystąpić tylko w głównych wersjach).

Lub, jak powiedział PEP 440:

Dla danego identyfikatora wydania VN zgodna klauzula zwolnienia jest w przybliżeniu równoważna parze klauzul porównania:

>= V.N, == V.*


3
"w przybliżeniu"? Czy są jakieś wyjątki od tej równoważności?
AXO

1
@AXO AFAIK, istnieją subtelności w dopasowywaniu wersji przed i po wydaniu. W większości przypadków nie ma to wpływu na podstawowe użycie, w większości ograniczone do dopasowania wersji głównej / pomocniczej.
Maxime Lorant

14

To jest „kompatybilny release” wersja specifier .

Odpowiada mock-django >= 0.6.10, == 0.6.*:, i jest uporządkowanym sposobem dopasowania wersji, która ma być zgodna. Mówiąc prostym językiem, to trochę tak, jakby powiedzieć: „Potrzebuję wersji mock-django, która jest co najmniej tak nowa jak 0.6.10, ale nie tak nowa, żeby nie była z nią kompatybilna”.

Jeśli nie masz pewności co do tych wszystkich numerów wersji, szybkie spojrzenie na schemat wersji PEP440 powinno Cię rozwiązać!


7

~ = oznacza kompatybilną wersję. Nie mniej niż 0,6,10 i więcej (0,6. *).


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.