欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

ImportError: dlopen(/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/

程序员文章站 2022-05-10 14:55:07
...

前言

最近用mac新装了pytorch遇到标题的问题,查了一下相关解决方案,成功解决,但有一些需要注意的点,这里做一下记录。

问题产生

此问题大多是在pytorch安装之后,尝试import torch报出的,如下图:

ImportError: dlopen(/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/

ImportError: dlopen(/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/torch/_C.cpython-38-darwin.so, 2): Library not loaded: @rpath/libc++.1.dylib
Referenced from: /Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/torch/_C.cpython-38-darwin.so

问题解决

百度直接按问题搜索了一下解决办法,找到了一篇可行的文章
但该文章中有一些细节没有注意给出,这里强调一下。

主要执行两个命令:

  • 查询otool

    otool -L /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/torch/_C.cpython-37m-darwin.so
    

    这里需要注意一点,这个命令是跟你的python版本相关的,因此后半部分不能直接复制上面的命令内容,需根据自己python版本进行修改。

    • 回到报错的代码上,发现类似语句,将其复制
      ImportError: dlopen(/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/

      例如我是python3.8,所以我应该将otool -L后面的代码修改为/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/torch/_C.cpython-38-darwin.so

    运行之后会有如下输出:
    ImportError: dlopen(/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/

  • 安装tool

    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/torch/_C.cpython-37m-darwin.so
    

    此处也需要注意python版本,将后半部分根据自己情况修改。

上面两条命令执行过后一般就解决了。

参考资料

  • https://blog.csdn.net/qq_41024144/article/details/105742035
相关标签: 实用技巧