Pytorch: 我无法导入 PyTorch,无法加载 libomp.dylib。

创建于 2019-05-01  ·  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( condapip ,来源):pipenv
  • Python版本:3.7.1
high priority binaries build triaged

最有用的评论

brew install libomp解决了这个问题。

所有27条评论

brew install libomp解决了这个问题。

抄送@JerryShih

cc @ pjh5 @kostmo

brew install libomp解决了这个问题。

@ezyang
如何在pytorch pip安装中添加libomp依赖?

是否将所有 pytorch 依赖库都备份到 Wheel 包中?
如果是,我将添加像这些代码的 libomp 文件: https :

其他依赖库怎么样? 它们都在第三方文件夹中并从源代码构建吗?

pip 对 brew 一无所知,您不能要求它 brew 安装包。 此外,虽然这个决议“解决”了这个问题,但我很想更好地理解这种依赖是如何产生的(特别是,为什么我们要构建依赖于 brew 库的二进制文件?这听起来很糟糕。)

在某些情况下,我们不能假设最终用户安装了库,我们会随二进制文件一起分发库。 但是,我不确定我们是否应该为 libomp.dylib 执行此操作。 抄送@soumith

这是需要解决的问题。 我可以看看修复二进制文件并重新上传。
问题是我们的 macos CI 在此处安装了 libomp: https :

我可以删除二进制文件的这种依赖关系。 我会尽快发布 PR

brew install libomp 解决问题
这解决了我的问题

我同意@ezyang 的观点,即通过 pip 安装 pytorch 不应依赖于 brew。 PyTorch 是我的库的依赖项,我的用户可能会也可能不会/关心 brew。

  • 所以只是为了澄清,解决方案是删除brew install libomp步骤 && 正确打包 libomp (.dylib、.so 等)的平台特定库? 那是对的吗?

  • 如果我想通过此修复程序获取最新的每晚……那将是pip install torch_nightly -f blah.html吗?

@ruohoruotsi所有这些都是正确的

仅供参考:如果使用 macports,可以通过在/usr/local/opt/libomp/lib/使用sudo ln -s /opt/local/lib/libomp/libomp.dylib创建符号链接来解决该问题。

仅供参考:如果使用 macports,可以通过在/usr/local/opt/libomp/lib/使用sudo ln -s /opt/local/lib/libomp/libomp.dylib创建符号链接来解决该问题。

应该通过查看库表单系统而不是仅检查 /usr/local/opt/ 来从 PyTorch 解决该问题

brew install libomp解决了这个问题。

这行得通!

尝试将 pytorch 从 1.0.1 升级到 1.1 时,我遇到了同样的问题并找到了这个线程

linux 服务器上的更新运行良好,但不适用于我的 macbook (OSX)

我尝试了 brew install libomp 但找不到 brew 公式,因此这并没有解决问题,我不得不在 OSX 上降级到 1.0.1 才能再次导入火炬

有没有人对 pytorch 的 pip 安装和 libomp 的 brew 安装有同样的问题?

@苏米思

我可以看看修复二进制文件并重新上传。

是否仍然有任何计划这样做,或者新的二进制版本会等待下​​一个 PyTorch 版本吗?

尝试将 pytorch 从 1.0.1 升级到 1.1 时,我遇到了同样的问题并找到了这个线程

linux 服务器上的更新运行良好,但不适用于我的 macbook (OSX)

我尝试了 brew install libomp 但找不到 brew 公式,因此这并没有解决问题,我不得不在 OSX 上降级到 1.0.1 才能再次导入火炬

有没有人对 pytorch 的 pip 安装和 libomp 的 brew 安装有同样的问题?

您需要先安装 brew,然后转到brew 站点并按照安装说明进行操作。

感谢您的回复,我已经安装了 brew,但还不够最新
所以我更新了一切,现在它可以工作了

请注意其他用户,当我执行 brew install libomp 时,它通过了,但其他应用程序不再工作(Spyder IDE); 此时我的操作系统仍然是 10.11 (Capitan),我必须升级到 10.12 (Sierra) 才能解决问题

所以根据我的经验,我建议至少在安装 pytorch 1.1 和 libomp 之前升级到 Sierra(我使用 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 引入的更改完全解决了这个问题,所以我想知道您是否有一个 1.1.0 非 post2 躺在某个地方无意中被捡起。

@sukuya这听起来像是一个不同的问题,因为听起来您是在尝试自己编译 PyTorch,但这个问题与预编译的二进制文件有关。

@alex-xnor 我正在编译一个使用预构建的 C++ 程序libtorch并且我收到了这些错误。

@sukuya你能提出一个关于你的问题的更多细节的新问题吗? 特别是,您能否包含正在运行的 cmake/makefile 和正在使用的编译器命令?

brew install libomp解决了这个问题。

Thx兄弟我已经解决了我的问题

有没有人对 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-达尔文

此页面是否有帮助?
0 / 5 - 0 等级