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

100

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

mock-django~=0.6.10

¿Qué ~=significa?

James Hiew
fuente

Respuestas:

119

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á la 0.7.0, por ejemplo. Garantiza que obtendrá correcciones de seguridad pero mantendrá la compatibilidad con versiones anteriores, si el encargado 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 PEP 440:

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

>= V.N, == V.*

Maxime Lorant
fuente
3
"aproximadamente"? ¿Existen excepciones para esta equivalencia?
AXO
1
@AXO AFAIK, hay sutilezas con la coincidencia de versiones pre / post lanzamiento. La mayoría de las veces, esto no afectará el uso básico, principalmente limitado a la coincidencia de versiones mayor / menor de todos modos.
Maxime Lorant
12

Ese es el especificador de versión de 'lanzamiento 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 la 0.6.10, pero no tan nueva como para que no sea compatible con ella".

Si no está seguro acerca de todas estas cosas sobre el número de versión, ¡un vistazo rápido al esquema de versión de PEP440 debería resolverlo!


fuente
7

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

Nurjan
fuente