web-dev-qa-db-fra.com

Dans requirements.txt, que signifie tilde égal à (~ =)?

Dans le requirements.txt pour une bibliothèque Python que j'utilise, l'une des exigences est spécifiée comme:

mock-Django~=0.6.10

Qu'est-ce que ~= signifier?

38
James Hiew

Cela signifie qu'il sélectionnera la dernière version du package, supérieure ou égale à 0.6.10, mais toujours dans la version 0.6. *, Donc il ne téléchargera pas 0.7.0 par exemple. Il garantit que vous obtiendrez des correctifs de sécurité mais conserverez la compatibilité descendante, si le mainteneur du package respecte le contrôle de version sémantique (qui stipule que les changements de rupture ne doivent se produire que dans les versions principales).

Ou, comme le dit le PEP 440:

Pour un identificateur de version donné V.N, la clause de version compatible est approximativement équivalente à la paire de clauses de comparaison:

>= V.N, == V.*

51
Maxime Lorant

C'est la "version compatible" spécificateur de version .

C'est équivalent à: mock-Django >= 0.6.10, == 0.6.*, et est une manière ordonnée de faire correspondre une version qui devrait être compatible. En clair, c'est un peu comme dire: "J'ai besoin d'une version de mock-Django qui est au moins aussi récente que 0.6.10, mais pas si nouvelle qu'elle n'est pas compatible avec elle."

Si vous n'êtes pas sûr de tout ce numéro de version, un rapide coup d'œil au PEP440 schéma de version devrait vous trier!

7
user6669671

~ = signifie une version compatible. Pas moins de 0.6.10 et plus (0.6. *).

5
Nurjan

Une clause de version compatible se compose de l'opérateur de version compatible ~ = et d'un identifiant de version. Il correspond à toute version candidate qui devrait être compatible avec la version spécifiée.

Vous pouvez en savoir plus ici: https://www.python.org/dev/peps/pep-0440/#compatible-release

3
Kieran