【问题标题】:How to solve dyld: Symbol not found - Expected in: /usr/lib/libSystem.B.dylib ( _fdopendir$INODE64 )如何解决 dyld:找不到符号 - 预期在:/usr/lib/libSystem.B.dylib (_fdopendir$INODE64)
【发布时间】:2019-10-23 20:22:27
【问题描述】:

我搜索了它,找不到太多参考资料。 我猜:

dyld: Symbol not found: _fdopendir$INODE64
  Referenced from: /Users/gg4u/Sites/miniconda3/envs/meteo/bin/python
  Expected in: /usr/lib/libSystem.B.dylib

是与某些库的编译方式有关的错误。

我正在运行 mac os 10.9.5。

在 conda 环境中安装 fbprophet 后出现此错误。

注意 - 首次安装成功。

在python中导入fbprophet库时首次出现此错误。

我尝试卸载,重新安装,但这次安装时也出现错误。

看来 conda 环境已损坏。

试图寻找 fbprophet 的早期版本,但找不到 0.5 : https://anaconda.org/conda-forge/fbprophet

请告知这个错误可能是什么以及如何解决它。

也许我可以手动链接它?我可以下载升级版的 /usr/lib/libSystem.B.dylib 吗?

【问题讨论】:

    标签: python macos gcc conda


    【解决方案1】:

    可能的原因:通道混合

    缺少符号是不正确的通道混合的典型结果。 Conda Forge (conda-forge) 和 Anaconda (defaults) 通道使用不同的构建堆栈,这可能导致引用不能跨通道转换的符号。由于您使用 Conda Forge 获取 fbprophet,因此您应该关注 Conda Forge's recommended configuration,它将设置 channel_priority: strict 并将 conda-forge 频道放在 defaults 之前。

    进行这些更改后,在环境中运行conda update --all 可能就足够了(尽管这可能会拉取比您想要的新版本)。否则,我可能会使用conda env export --no-builds 转储环境,然后在确保 YAML 中的通道优先级正确后重新创建。

    【讨论】:

    • tks @merv 我不知道为什么你的答案被否决了,如果你的答案解决了这个问题:下次我遇到这个错误时,我会尝试以不同的方式选择频道,优先考虑 conda-与channel_priority: strict 锻造。但是,到目前为止,我还没有通过手动选择源来获得运气:例如,我在安装计算机视觉库 (open-cv) 并混合来自 pipcondaconda-forge 的源时遇到了这个问题。如果发生错误,我必须破坏环境并重新创建它。我认为这与安装软件包的顺序和我的本地 /usr/lib/libSystem.B.dylib 有关
    • @user305883 感谢您的回复。您能否发布环境的 YAML?即conda env export > env.yaml的输出?如果简短,请将其添加到问题中;如果很长,make a Gist 或类似的东西。
    • 好的!我发布了来自不同环境的三个 yaml gist.github.com/gg4u/73189d3fe8f476948e96b1d8bc9e2dc0
    猜你喜欢
    • 2021-10-09
    • 2011-09-14
    • 1970-01-01
    • 1970-01-01
    • 2015-05-02
    • 2020-04-18
    • 2016-06-01
    • 2021-12-30
    • 2020-07-22
    相关资源
    最近更新 更多