anaconda Qt vs sistema Qt

2

A estrutura do python do anaconda inclui suas próprias bibliotecas compartilhadas do Qt, entre outras. Devido à natureza da estrutura, ela deve aparecer primeiro na variável de ambiente PATH , portanto, seus binários python têm preferência sobre os do sistema.

Isso cria um conflito quando se deseja usar as bibliotecas compartilhadas Qt do sistema para projetos que não têm nada a ver com python. Ao compilar um projeto Qt, ele usará o binário qmake do anaconda junto com suas bibliotecas compartilhadas.

Pode-se forçar o uso do binário qmake , precedendo seu caminho para a variável PATH , mas isso não funciona com as bibliotecas compartilhadas. Eu tentei mudar o LD_LIBRARY_PATH , mas ele continua escolhendo os anaconda.

"Soluções" eu encontrei:

  1. LD_PRELOAD: Força o .so que usa as bibliotecas compartilhadas do Qt para usar as do sistema, adicionando-as uma por uma ao LD_PRELOAD env var. Isso acabou sendo tedioso e demorado.
  2. Mexa com Anaconda: Exclua tudo relacionado ao Qt do anaconda como recomendado aqui a>. Isso parece muito sujo e propenso a erros no futuro, se alguém quiser desenvolver aplicativos de GUI em python.
  3. Anaconda Qt > Sistema Qt: Use o anaconda Qt ao invés do sistema Qt. Isso parece uma atribuição errada de responsabilidades. Meu projeto do Qt que não tem nada a ver com python não deve ser acoplado à minha instalação do anaconda. Eles devem ser independentes um do outro.
  4. Alterar modus operandi: Em vez de todos os meus shells terem o caminho anaconda prefixado à variável PATH , tenha um script facilmente disponível que o preencha sempre que eu precisar, como é recomendado aqui . Os problemas são que eu estou acostumado a ter meus binários python sempre prontamente disponíveis e que é propenso a erros quando estou usando binários python do sistema inconscientemente.
  5. Mover anaconda: Movendo temporariamente a pasta anaconda para que não seja encontrada no caminho. É o mais rápido, mas depende muito da minha memória para consertar tudo depois que eu termino de usar as bibliotecas Qt do sistema.

Qt não é o único pacote "não python" incluído pelo anaconda por padrão, então qualquer solução "real" a priori pode ser aplicada a qualquer outra conflitante.

    
por Alechan 05.01.2018 / 03:54

0 respostas