En requisitos.txt, ¿qué significa tilde igual a (~=)?

Resuelto James Hiew asked hace 8 años • 6 respuestas

En la requirements.txtbiblioteca de Python que estoy usando, uno de los requisitos se especifica como:

mock-django~=0.6.10

¿Que ~=significa?

James Hiew avatar Sep 20 '16 16:09 James Hiew
Aceptado

Significa que seleccionará la última versión del paquete, mayor o igual a 0.6.10, pero aún en la versión 0.6.*, por lo que no descargará 0.7.0, por ejemplo. Garantiza que obtendrá correcciones de seguridad pero mantendrá la compatibilidad con versiones anteriores, si el mantenedor del paquete respeta el control de versiones semántico (que establece que los cambios importantes deben ocurrir solo en las versiones principales).

O, como dice el PEP 440:

Para un identificador de versión determinado VN, la cláusula de liberación compatible es aproximadamente equivalente al par de cláusulas de comparación:

>= V.N, == V.*

  • Definición en PEP 440
  • Ejemplo completo aquí en la documentación.
Maxime Lorant avatar Sep 20 '2016 09:09 Maxime Lorant

Además de las respuestas existentes, creo que es muy importante mencionar también que si bien

~=0.6.10 significa >=0.6.10, ==0.6.*

Lo siguiente también es cierto

~=0,6 significa >=0,6, ==0.*

Se menciona en la documentación de PEP .

Farhan Haider avatar May 03 '2021 19:05 Farhan Haider

Ese es el especificador de versión de 'versión compatible' .

Es equivalente a: mock-django >= 0.6.10, == 0.6.*y es una forma ordenada de hacer coincidir una versión que se espera que sea compatible. En términos sencillos, es un poco como decir: "Necesito una versión de mock-django que sea al menos tan nueva como 0.6.10, pero no tan nueva que no sea compatible con ella".

Si no está seguro de todo esto del número de versión, ¡un vistazo rápido al esquema de versión PEP440 lo solucionará!

 avatar Sep 20 '2016 09:09

~= significa una versión compatible. No inferior a 0.6.10 y superior (0.6.*).

Nurjan avatar Sep 20 '2016 09:09 Nurjan