Descrição
Discutirei pacotes específicos, uma vez que isso foi observado em estado selvagem (HypothesisWorks / hipótese # 2113): recentemente atualizamos nossa dependência de install_requires
em attrs>=16.0
para attrs>=19.2
, em a base de que a instalação da versão mais recente do Hypothesis também atualizaria os atributos dos usuários.
pip install hypothesis
realmente funciona.pip install pytest hypothesis
funciona se uma versão mais antiga do attrs ainda não estiver instalada.Parece que, quando vários pacotes são listados em um comando de instalação, a compatibilidade das dependências já instaladas são avaliadas apenas para o primeiro pacote listado e para pacotes posteriores a presença, mas não a versão das dependências, é verificada. Isso também afeta o uso de arquivos de requisitos.
Comportamento esperado
Independentemente de outros pacotes listados para instalação ou já presentes, pip install hypothesis
deve resultar em um conjunto compatível de pacotes instalados ou em uma mensagem de erro - não um ambiente quebrado.
Como reproduzir
[tox]
skipsdist=True
[testenv]
deps =
pip
attrs==19.1.0
commands =
## Execute the problematic install command
# pip install hypothesis # works
# pip install hypothesis pytest # works
pip install pytest hypothesis # fails, as does `pip install attrs hypothesis` !
# pip install --upgrade pytest hypothesis # works
## Check that the installed packages are compatible
python -c "import hypothesis"
Em seguida, execute tox --recreate
para, bem, recriar o ambiente virtual e executar os comandos.
(E obrigado a todos que trabalharam em pip
, é muito valioso e muito apreciado 😍)
Obrigado pelos detalhes e reprodutor fácil! Muito apreciado!
Este é basicamente o # 988. Como um rápido resumo:
ERROR
em letras maiúsculas.
ERROR: hypothesis 4.38.2 has requirement attrs>=19.2.0, but you'll have attrs 19.1.0 which is incompatible.
pip check
como parte do seu CI, para ter certeza de que o pip não fez algo estúpido.pip-tools
(envolve o pip com um resolvedor melhor) ou pipenv
(que usa pip-tools
) ou poetry
(que tem seu próprio resolvedor), para evitar isso peculiaridade do resolvedor de pip.Ah, entendo! Verifiquei as últimas páginas de problemas, mas nada tão antigo ... feliz em fechar este problema como uma duplicata, pois não acho que ele tenha nenhuma informação extra?
Fechando como duplicata de # 988.