En requisitos.txt, ¿qué significa tilde igual a (~=)?
En la requirements.txt
biblioteca de Python que estoy usando, uno de los requisitos se especifica como:
mock-django~=0.6.10
¿Que ~=
significa?
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.
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 .
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á!
~= significa una versión compatible. No inferior a 0.6.10 y superior (0.6.*).