Pytorch: Não consigo importar o PyTorch, libomp.dylib não pode ser carregado.

Criado em 1 mai. 2019  ·  27Comentários  ·  Fonte: pytorch/pytorch

🐛 Bug

Tentei instalar o PyTorch, mas não consigo usar. Ele não pode vincular a biblioteca dinâmica libomp.dylib

Reproduzir

Passos para reproduzir o comportamento:

  1. pipenv instalar tocha torchvision
  2. from torch.utils.data import Dataset
Traceback (most recent call last):
  File "/Users/kaspersapala/Documents/Airly/new-pollution-forecast/Datasets/__init__.py", line 3, in <module>
    from torch.utils.data import Dataset
  File "/Users/kaspersapala/.local/share/virtualenvs/new-pollution-forecast-BSetKF9E/lib/python3.7/site-packages/torch/__init__.py", line 79, in <module>
    from torch._C import *
ImportError: dlopen(/Users/kaspersapala/.local/share/virtualenvs/new-pollution-forecast-BSetKF9E/lib/python3.7/site-packages/torch/_C.cpython-37m-darwin.so, 9): Library not loaded: /usr/local/opt/libomp/lib/libomp.dylib
  Referenced from: /Users/kaspersapala/.local/share/virtualenvs/new-pollution-forecast-BSetKF9E/lib/python3.7/site-packages/torch/lib/libshm.dylib
  Reason: image not found

Comportamento esperado

Ser capaz de usar e importar PyTorch

Ambiente

  • Versão do PyTorch (por exemplo, 1.0): 1.1.0
  • SO (por exemplo, Linux): Mac OS Mojave
  • Como você instalou o PyTorch ( conda , pip , fonte): pipenv
  • Versão Python: 3.7.1
high priority binaries build triaged

Comentários muito úteis

brew install libomp resolve o problema.

Todos 27 comentários

brew install libomp resolve o problema.

cc @JerryShih

cc @ pjh5 @kostmo

brew install libomp resolve o problema.

@ezyang
Como adicionar a dependência libomp na instalação do pytorch pip?

Todas as bibliotecas dependentes de pytorch serão incluídas no pacote wheel?
Em caso afirmativo, adicionarei os arquivos libomp como este código: https://github.com/pytorch/pytorch/blob/2356fac9a5205a2e11f1abf6105fdb3124246d41/setup.py#L738 -L825

E quanto a outras bibliotecas dependentes? Eles estão todos na pasta third_party e construídos a partir da fonte?

pip não sabe nada sobre cerveja, você não pode pedir a ele para instalar um pacote de cerveja. Além disso, embora esta resolução "resolva" o problema, eu adoraria entender melhor como essa dependência surgiu (em particular, por que estamos criando binários com uma dependência de bibliotecas de cerveja? Isso soa mal.)

Em alguns casos em que não podemos presumir que os usuários finais tenham uma biblioteca instalada, distribuímos a biblioteca com nossos binários. No entanto, não tenho certeza se devemos fazer isso para libomp.dylib. cc @soumith

isso é algo que precisa ser consertado. Posso dar uma olhada em como consertar binários e reenviar.
O problema é que nosso macos CI instala o libomp aqui: https://github.com/pytorch/pytorch/blob/0da0c4be48c675d61c39b4554131e1dbe9177cab/.circleci/verbatim-sources/header-section.yml#L294 , Acho que para CI / testes. Mas as compilações binárias também o pegam e usam.

Posso remover essa dependência dos binários. Eu vou colocar um PR em breve

brew install libomp resolve o problema
isso resolve meu problema

Eu concordo com @ezyang que uma instalação do pytorch via pip não deve depender da fermentação. PyTorch é uma dependência da minha biblioteca e meus usuários podem ou não ter / se importar com o brew.

  • Portanto, apenas para esclarecer, a solução foi remover o brew install libomp step && empacotar corretamente as bibliotecas específicas da plataforma de libomp (.dylib, .so, etc)? Isso é correto?

  • Se eu gostaria de pegar o último noturno com esta correção ... seria pip install torch_nightly -f blah.html ?

@ruohoruotsi tudo isso está correto

Apenas para referência: se estiver usando macports, o problema pode ser contornado criando um link simbólico usando sudo ln -s /opt/local/lib/libomp/libomp.dylib em /usr/local/opt/libomp/lib/ .

Apenas para referência: se estiver usando macports, o problema pode ser contornado criando um link simbólico usando sudo ln -s /opt/local/lib/libomp/libomp.dylib em /usr/local/opt/libomp/lib/ .

o problema deve ser corrigido no PyTorch procurando por bibliotecas no sistema em vez de apenas verificar / usr / local / opt /

brew install libomp resolve o problema.

Funciona!

ao tentar atualizar o pytorch de 1.0.1 para 1.1, encontrei o mesmo problema e encontrei este tópico

a atualização no servidor Linux funcionou bem, mas não no meu macbook (OSX)

Eu tentei brew install libomp, mas a fórmula brew não foi encontrada, portanto, isso não corrigiu o problema e eu tive que fazer o downgrade para 1.0.1 no OSX para poder importar a tocha novamente

Alguém teve o mesmo problema em relação à instalação do pip do pytorch e à instalação do brew do libomp?

@soumith

Posso dar uma olhada em como consertar binários e reenviar.

Ainda existe algum plano para fazer isso ou os novos lançamentos binários vão esperar pelo próximo lançamento do PyTorch?

ao tentar atualizar o pytorch de 1.0.1 para 1.1, encontrei o mesmo problema e encontrei este tópico

a atualização no servidor Linux funcionou bem, mas não no meu macbook (OSX)

Eu tentei brew install libomp, mas a fórmula brew não foi encontrada, portanto, isso não corrigiu o problema e eu tive que fazer o downgrade para 1.0.1 no OSX para poder importar a tocha novamente

Alguém teve o mesmo problema em relação à instalação do pip do pytorch e à instalação do brew do libomp?

Você precisa instalar o brew primeiro, vá ao site do brew e siga as instruções de instalação.

obrigado pela sua resposta, eu tinha o brew instalado, mas não era o suficiente atualizado
então eu atualizei tudo e agora funciona

observação para outros usuários, quando eu fiz a instalação do libomp, ele passou, mas outros aplicativos não funcionaram mais (Spyder IDE); neste momento meu SO ainda era 10.11 (Capitan) e tive que fazer um upgrade para 10.12 (Sierra) para poder resolver o problema

então, por experiência própria, eu recomendaria atualizar para o Sierra pelo menos antes de instalar o pytorch 1.1 e libomp (eu uso pip e brew para todas as instalações)

carregou novos binários que removem a dependência de libomp.dylib

Agora recebo o erro clang: error: unsupported option '-fopenmp' .

@sukuya Isso soa como um problema diferente, já que parece que você está tentando compilar o PyTorch sozinho, mas esse problema dizia respeito a um problema com os binários pré-compilados.

esse problema ainda está presente na tocha 1.1.0.post2, você sabe quando a correção estará disponível na versão estável?

@torrmal Como você tem certeza de que está usando 1.1.0.post2? Em meus testes, as alterações introduzidas por 1.1.0.post2 corrigiram esse problema completamente, então eu me pergunto se você tem um 1.1.0 não post2 em algum lugar que foi pego inadvertidamente.

@sukuya Isso soa como um problema diferente, já que parece que você está tentando compilar o PyTorch sozinho, mas esse problema dizia respeito a um problema com os binários pré-compilados.

@ alex-xnor Eu estava compilando um programa c ++ que usava libtorch pré-construído e recebo esses erros.

@sukuya você pode criar um novo problema com mais detalhes sobre o seu problema? Em particular, você pode incluir o cmake / makefile que está executando e o comando do compilador que está usando?

brew install libomp resolve o problema.

Obrigado mano eu resolvi meu problema

Alguém tem alguma sugestão para quando o brew install libomp não funcionar? Eu reinstalei, revinculei, mas sem sucesso.

coloque isso no terminal, espero que funcione. Levei 2 horas para consertar isso e espero que você consiga consertar mais rápido, caramba ...

install_name_tool -change @ rpath / libc ++. 1.dylib /usr/lib/libc++.1.dylib /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/_cvxcore.cpython-37m- darwin.so

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