comando pip3 para atualizar todos os pacotes, que é cuidadoso com os conflitos de dependência?

sdbbs

Até agora, usei (via Como atualizar todos os pacotes Python com pip )

pip3 list --format freeze --outdated | cut -d= -f1 | xargs pip3 install --upgrade-strategy eager --upgrade

para atualizar todos os meus pacotes Python pip. Até agora funcionou bem para mim - exceto por uma vez, quando recebi uma espécie de mensagem de conflito, infelizmente não guardei uma cópia dela; meu palpite é que foi algo semelhante a este observado aqui https://pip.pypa.io/en/stable/user_guide/#fixing-conflicting-dependencies :

Due to conflicting dependencies pip cannot install
package_coffee and package_tea:
- package_coffee depends on package_water<3.0.0,>=2.4.2
- package_tea depends on package_water==2.3.1

De qualquer forma, agora eu tentei instalar voilapara a minha instalação do Jupyter e acabou assim:

(notebook) user@server:/home/web/Jupyter$ pip3 install voila
...
Installing collected packages: jupyter-client, voila
  Attempting uninstall: jupyter-client
    Found existing installation: jupyter-client 7.0.3
    Uninstalling jupyter-client-7.0.3:
      Successfully uninstalled jupyter-client-7.0.3
Successfully installed jupyter-client-6.1.12 voila-0.2.13

Em outras palavras: já jupyter-client-7.0.3instalei antes, o mais recente; mas agora que eu queria instalar voila, devido a voilarequisitos, essa versão mais recente foi desinstalada e uma versão anterior 6.1.12, compatível com voila, foi instalada em seu lugar.

Portanto, agora, se eu quiser verificar os pacotes desatualizados, recebo, como esperado, uma jupyter-clientlista:

(notebook) user@server:/home/web/Jupyter$ pip3 list --format freeze --outdated
jupyter-client==6.1.12

... mas então, se eu executar o comando full pipe, pip3 list --format freeze --outdated | cut -d= -f1 | xargs pip3 install --upgrade-strategy eager --upgradeele vai querer atualizar jupyter-clientpara 7.0.3, que vai quebrar voila(eu acho, não me atrevo a tentar).

Então, há um comando de atualização que tomaria uma situação como esta e, em tal estado durante a atualização, impediria mudanças e me notificaria? Diga, algo como:

AVISO: Há uma atualização para jupyter-client = 6.1.12 (versão mais recente 7.0.3) - no entanto, a instalação desse pacote causaria um conflito com o voila=0.2.13pacote instalado atualmente ; não continuar com esta atualização. Para forçar esta atualização de qualquer maneira, use [...]

O pjot

Atualizar pacotes em python nunca é fácil devido às (sub) dependências sobrepostas. Existem algumas ferramentas que tentam ajudar você a gerenciar. No meu trabalho atual, usamos ferramentas pip . E em alguns projetos usamos poesia, mas fico menos feliz com o manuseio.

Para pip-tools você define seus pacotes de nível superior no requirements.inarquivo, que então resolve as sub (sub-sub) dependências e as produz em um requirements.txtarquivo. A vantagem disso é que você só se preocupa com seus pacotes principais. Você ainda pode atualizar subdependências, se desejar.

Longa história curta; atualizar cegamente todos os seus pacotes provavelmente nunca funcionará como pretendido ou esperado. Ou os pacotes SÃO atualizados, mas param de funcionar, ou funcionam, mas não funcionam com outro pacote que foi atualizado porque eles precisavam de uma versão anterior desse pacote.

Meu conselho seria começar com seus pacotes principais e construir a partir daí, usando uma das ferramentas mencionadas. Não há uma bala de prata para isso. O inferno da dependência é uma coisa muito real em python.

Este artigo é coletado da Internet.

Se houver alguma infração, entre em [email protected] Delete.

editar em
0

deixe-me dizer algumas palavras

0comentários
loginDepois de participar da revisão

Artigos relacionados

qual é o comando para atualizar todos os meus pacotes de ferrugem

Como forçar o conda a atualizar todos os pacotes, independentemente do gráfico de dependência?

Como atualizar todos os pacotes Python com pip?

atualizar todos os pacotes de pip desatualizados descartando falhas

Qual é o comando correto para atualizar todos os pacotes anaconda python?

Como faço para atualizar todos os pacotes com escopo definido com Yarn?

Como faço para atualizar todos os pacotes com escopo definido com Yarn?

Como instalar todos os pacotes Assemblies e Nuget ausentes com dependência de uma só vez - Visual Studio 2017?

Usando o Homebrew python3 com os pacotes homebrew e os pacotes pip / pip3 no Visual Studio Code para Mac OS

Usando o Homebrew python3 com os pacotes homebrew e os pacotes pip / pip3 no Visual Studio Code para Mac OS

Existe uma maneira de atualizar um pacote e, recursivamente, todos os pacotes que ele usa?

Migrar todos os pacotes python2 para python3 com pip

Como posso pesquisar todos os pacotes com hoogle via linha de comando?

Como posso pesquisar todos os pacotes com hoogle via linha de comando?

Lista completa de todos os pacotes disponíveis através do comando pip install?

anaconda atualizar todos os pacotes possíveis?

Por que preciso atualizar os pacotes SSIS?

Não é possível atualizar os pacotes NPM com o comando npm update / upgrade -g

Como criar automaticamente um arquivo de requisitos com todos os pacotes Python instalados usando pip?

Para Java, posso importar todos os pacotes de uma vez?

Como atualizar o python 3.8 para o python 3.9 mantendo todos os pacotes?

Passar dados de tempo de execução para serviços que são injetados com injeção de dependência

Maven - linha de comando para atualizar a dependência por groupId

Maven - linha de comando para atualizar a dependência por groupId

Testando um serviço com uma dependência que envolve os métodos httpClient

Identificar a relação de dependência para pacotes Python instalados com pip

Por que os pacotes estão sendo rejeitados mesmo com uma regra que aceita todos eles de antemão?

Atualizar automaticamente pacotes pip3 desatualizados com scripts bash

Como definir uma dependência para um projeto com todos os subprojetos?

TOP lista

  1. 1

    R Shiny: use HTML em funções (como textInput, checkboxGroupInput)

  2. 2

    O Chromium e o Firefox exibem as cores de maneira diferente e não sei qual deles está fazendo certo

  3. 3

    Como assinar digitalmente um documento PDF com assinatura e texto visíveis usando Java

  4. 4

    R Folheto. Dados de pontos de grupo em células para resumir muitos pontos de dados

  5. 5

    Gerenciar recurso shake de Windows Aero com barra de título personalizado

  6. 6

    Como obter dados API adequados para o aplicativo angular?

  7. 7

    UITextView não está exibindo texto longo

  8. 8

    Por que meus intervalos de confiança de 95% da minha regressão multivariada estão sendo plotados como uma linha de loess?

  9. 9

    Acessando relatório de campanhas na AdMob usando a API do Adsense

  10. 10

    Usando o plug-in Platform.js do Google

  11. 11

    Como posso modificar esse algoritmo de linha de visada para aceitar raios que passam pelos cantos?

  12. 12

    Dependência circular de diálogo personalizado

  13. 13

    Coloque uma caixa de texto HTML em uma imagem em uma posição fixa para site para desktop e celular

  14. 14

    iOS: como adicionar sombra projetada e sombra de traço no UIView?

  15. 15

    Como usar a caixa de diálogo de seleção de nomes com VBA para enviar e-mail para mais de um destinatário?

  16. 16

    Tabela CSS: barra de rolagem para a primeira coluna e largura automática para a coluna restante

  17. 17

    How to create dynamic navigation menu select from database using Codeigniter?

  18. 18

    Converter valores de linha SQL em colunas

  19. 19

    ChartJS, várias linhas no rótulo do gráfico de barras

  20. 20

    用@StyleableRes注释的getStyledAttributes。禁止警告

  21. 21

    não é possível adicionar dependência para com.google.android.gms.tasks.OnSuccessListener

quentelabel

Arquivo