Pytorch: Я не могу импортировать PyTorch, libomp.dylib не загружается.

Созданный на 1 мая 2019  ·  27Комментарии  ·  Источник: pytorch/pytorch

🐛 Ошибка

Я попытался установить PyTorch, но не могу его использовать. Он не может связать динамическую библиотеку libomp.dylib

Воспроизводить

Шаги по воспроизведению поведения:

  1. pipenv установить факел 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

Ожидаемое поведение

Возможность использовать и импортировать PyTorch

Среда

  • Версия PyTorch (например, 1.0): 1.1.0
  • ОС (например, Linux): Mac OS Mojave
  • Как вы установили PyTorch ( conda , pip , исходный код): pipenv
  • Версия Python: 3.7.1
high priority binaries build triaged

Самый полезный комментарий

brew install libomp решает проблему.

Все 27 Комментарий

brew install libomp решает проблему.

cc @JerryShih

cc @ pjh5 @kostmo

brew install libomp решает проблему.

@ezyang
Как добавить зависимость libomp в установку pytorch pip?

Будут ли все библиотеки, зависимые от pytorch, поддерживаться в пакете wheel?
Если да, я добавлю файлы libomp вроде этого кода: https://github.com/pytorch/pytorch/blob/2356fac9a5205a2e11f1abf6105fdb3124246d41/setup.py#L738 -L825

А как насчет других зависимых библиотек? Все ли они находятся в папке Third_party и собраны из исходников?

pip ничего не знает о brew, вы не можете попросить его установить пакет. Кроме того, хотя это решение «решает» проблему, мне хотелось бы лучше понять, как возникла эта зависимость (в частности, почему мы создаем двоичные файлы с зависимостью от библиотек brew? Звучит плохо).

В некоторых случаях, когда мы не можем предположить, что у конечных пользователей установлена ​​библиотека, мы распространяем библиотеку вместе с нашими двоичными файлами. Однако я не уверен, что мы должны делать это для libomp.dylib. cc @soumith

это то, что нужно исправить. Я могу посмотреть на исправление двоичных файлов и повторную загрузку.
Проблема в том, что наш macos CI устанавливает libomp здесь: https://github.com/pytorch/pytorch/blob/0da0c4be48c675d61c39b4554131e1dbe9177cab/.circleci/verbatim-sources/header-section.yml#L294 , я думаю, для CI. Но бинарные сборки также берут его и используют.

Я могу удалить эту зависимость для двоичных файлов. Я скоро поставлю пиар

brew install libomp решает проблему
это решит мою проблему

Я согласен с @ezyang, что установка pytorch через pip не должна зависеть от brew. PyTorch - это зависимость для моей библиотеки, и мои пользователи могут иметь или не заботиться о пиве.

  • Итак, чтобы прояснить, решение заключалось в том, чтобы удалить шаг brew install libomp && правильно упаковать библиотеки libomp для конкретной платформы (.dylib, .so и т. Д.)? Это верно?

  • Если бы я хотел получить последний выпуск новостей с этим исправлением ... это будет pip install torch_nightly -f blah.html ?

@ruohoruotsi все правильно

Просто для справки: при использовании macports проблему можно обойти, создав символическую ссылку с помощью sudo ln -s /opt/local/lib/libomp/libomp.dylib в /usr/local/opt/libomp/lib/ .

Просто для справки: при использовании macports проблему можно обойти, создав символическую ссылку с помощью sudo ln -s /opt/local/lib/libomp/libomp.dylib в /usr/local/opt/libomp/lib/ .

проблема должна быть исправлена ​​в PyTorch путем просмотра системы форм библиотек, а не только проверки / usr / local / opt /

brew install libomp решает проблему.

Работает!

при попытке обновить pytorch с 1.0.1 до 1.1 я столкнулся с той же проблемой и нашел этот поток

обновление на сервере Linux работало нормально, но не на моем MacBook (OSX)

Я попробовал brew install libomp, но формулу заваривания найти не удалось, поэтому проблема не устранилась, и мне пришлось вернуться к версии 1.0.1 в OSX, чтобы иметь возможность снова импортировать torch

Была ли у кого-нибудь такая же проблема как с установкой pip pytorch, так и с установкой libomp?

@soumith

Я могу посмотреть на исправление двоичных файлов и повторную загрузку.

Есть ли еще какие-либо планы сделать это, или новые двоичные выпуски будут ждать следующего выпуска PyTorch?

при попытке обновить pytorch с 1.0.1 до 1.1 я столкнулся с той же проблемой и нашел этот поток

обновление на сервере Linux работало нормально, но не на моем MacBook (OSX)

Я попробовал brew install libomp, но формулу заваривания найти не удалось, поэтому проблема не устранилась, и мне пришлось вернуться к версии 1.0.1 в OSX, чтобы иметь возможность снова импортировать torch

Была ли у кого-нибудь такая же проблема как с установкой pip pytorch, так и с установкой libomp?

Сначала вам нужно установить brew, перейти на сайт и следовать инструкциям по установке.

спасибо за ответ, я установил brew, но он не обновился
так что я все обновил и теперь все работает

примечание для других пользователей: когда я заваривал установку libomp, она прошла, но другие приложения больше не работали (Spyder IDE); на данный момент моя ОС все еще была 10.11 (Capitan), и мне пришлось перейти на 10.12 (Sierra), чтобы решить проблему.

поэтому, исходя из своего опыта, я бы рекомендовал выполнить обновление до Sierra, по крайней мере, перед установкой pytorch 1.1 и libomp (я использую pip и brew для всей установки)

загружены новые двоичные файлы, которые устраняют зависимость от libomp.dylib

Теперь я получаю ошибку clang: error: unsupported option '-fopenmp' .

@sukuya Это похоже на другую проблему, поскольку похоже, что вы пытаетесь скомпилировать PyTorch самостоятельно, но эта проблема касалась проблемы с предварительно скомпилированными двоичными файлами.

эта проблема все еще присутствует в torch 1.1.0.post2, знаете ли вы, когда исправление будет доступно в стабильной версии?

@torrmal Как вы убедитесь, что используете 1.1.0.post2? В моем тестировании изменения, внесенные 1.1.0.post2, полностью устранили эту проблему, поэтому мне интересно, есть ли у вас где-то не-post2 1.1.0, который случайно подхватывается.

@sukuya Это похоже на другую проблему, поскольку похоже, что вы пытаетесь скомпилировать PyTorch самостоятельно, но эта проблема касалась проблемы с предварительно скомпилированными двоичными файлами.

@ alex-xnor Я компилировал программу на C ++, в которой использовались предварительно созданные libtorch и я получаю эти ошибки.

@sukuya, не могли бы вы сделать новый выпуск с более подробной информацией о вашей проблеме? В частности, можете ли вы включить запускаемый cmake / makefile и используемую команду компилятора?

brew install libomp решает проблему.

Спасибо братан я решил свою проблему

Есть ли у кого-нибудь предложение, когда brew install libomp не работает? Я переустановил, переподключил, но безрезультатно.

поместите это в терминал, надеюсь, это сработает. Мне потребовалось 2 часа, чтобы исправить это, и я надеюсь, что ты сможешь исправить это быстрее, блин ...

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

Была ли эта страница полезной?
0 / 5 - 0 рейтинги