Я попытался установить PyTorch, но не могу его использовать. Он не может связать динамическую библиотеку libomp.dylib
Шаги по воспроизведению поведения:
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
conda
, pip
, исходный код): pipenvbrew 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
Самый полезный комментарий
brew install libomp
решает проблему.