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?

James Hiew
fonte

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.*

Maxime Lorant
fonte
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ê!


fonte
7

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

Nurjan
fonte
3

Uma cláusula de liberação compatível consiste no operador de liberação compatível ~ = e um identificador de versão. Corresponde a qualquer versão candidata que deve ser compatível com a versão especificada.

Você pode ler mais aqui: https://www.python.org/dev/peps/pep-0440/#compatible-release

Kieran
fonte