Pip: Pip não atualiza dependências muito antigas ao instalar vários pacotes

Criado em 4 out. 2019  ·  3Comentários  ·  Fonte: pypa/pip

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 😍)

dependency resolution auto-locked bug

Todos 3 comentários

Obrigado pelos detalhes e reprodutor fácil! Muito apreciado!

Este é basicamente o # 988. Como um rápido resumo:

  • pip imprime uma mensagem em vermelho, com 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.
  • Use pip check como parte do seu CI, para ter certeza de que o pip não fez algo estúpido.
  • Use 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.

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

dmfigol picture dmfigol  ·  3Comentários

dstufft picture dstufft  ·  3Comentários

cjolowicz picture cjolowicz  ·  3Comentários

pradyunsg picture pradyunsg  ·  3Comentários

imzi picture imzi  ·  3Comentários