Em requirements.txt, o que significa til igual a (~ =)?


109

No requirements.txtpara uma biblioteca Python que estou usando, um dos requisitos é especificado como:

mock-django~=0.6.10

O que isso ~=significa?

Respostas:


126

Significa que ele irá selecionar a última versão do pacote, maior ou igual a 0.6.10, mas ainda na versão 0.6. *, Então não baixará 0.7.0 por exemplo. Isso garante que você obterá correções de segurança, mas manterá a compatibilidade com versões anteriores, se o mantenedor do pacote respeitar o controle de versão semântico (que afirma que mudanças significativas devem ocorrer apenas nas versões principais).

Ou, como dito pelo PEP 440:

Para um determinado identificador de liberação VN, a cláusula de liberação compatível é aproximadamente equivalente ao par de cláusulas de comparação:

>= V.N, == V.*


3
"aproximadamente"? Existem exceções para essa equivalência?
AXO

1
@AXO AFAIK, há sutilezas com correspondência de versão pré / pós-lançamento. Na maioria das vezes, isso não afetará o uso básico, limitado principalmente à correspondência de versão principal / secundária.
Maxime Lorant

14

Esse é o especificador de versão de 'lançamento compatível' .

É equivalente a: mock-django >= 0.6.10, == 0.6.*e é uma maneira organizada de combinar uma versão que se espera que seja compatível. Em português simples, é como dizer: "Eu preciso de uma versão do mock-django que seja pelo menos tão nova quanto a 0.6.10, mas não tão nova que não seja compatível com ela."

Se você não tem certeza sobre todas essas coisas de número de versão, uma rápida olhada no esquema de versão do PEP440 deve esclarecer você!


7

~ = significa uma versão compatível. Não inferior a 0,6.10 e superior (0,6. *).


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.