How to solve ImportError: dlopen(): Symbol not found:.... Expected in: flat namespace

How to solve ImportError: dlopen(): Symbol not found:.... Expected in: flat namespace

谁能帮我解决这个问题?

ImportError: dlopen(/Users/......./venv/lib/python3.6/site-packages/recordclass/mutabletuple.cpython-36m-darwin.so, 2): Symbol not found: __PyEval_GetBuiltinId
  Referenced from: /Users/......./venv/lib/python3.6/site-packages/recordclass/mutabletuple.cpython-36m-darwin.so
  Expected in: flat namespace
 in /Users/......../venv/lib/python3.6/site-packages/recordclass/mutabletuple.cpython-36m-darwin.so

我正在使用 Mac 如果有任何相关性的话

我不太明白问题出在哪里,但我假设 __PyEval_GetBuiltinId 是 broken/uninstalled。
所以我所做的就是解决这个问题 pip uninstall recordclass 然后 pip install --no-cache-dir recordclass 它似乎奏效了

我遇到了同样的问题,找到了你的问题。我有一台 M1 MacBook,但我认为我们遇到了 2 个问题。 起初,我遇到了与您类似的错误:

ImportError> dlopen(): Library not found

我为修复此错误所做的工作是 'brew install ___' 缺少的库,在我的例子中是 tesseract。在我再次安装 brew 之后,我 运行 我的脚本出现了一个新错误。这次我有一个

no suitable image found: imageXXX found but wrong architecture

所以我认为可能发生的情况是我们的 M1 芯片与 brew 安装的公式之间的兼容性存在潜在错误。我目前正在寻找解决方案。我首先要尝试的是从头开始重置我的安装,如果这不起作用,请查看替代方案。最终我认为解决问题的方法是像 OpenCV 网站上描述的那样从源代码安装:https://docs.opencv.org/master/d0/db2/tutorial_macos_install.html.

希望对您有所帮助!

编辑 我刚刚完全卸载 Homebrew 并从头开始重新安装它,两个桶,公式,一切!它似乎有效。我让 Tensorflow 和 OpenCV 都可以工作(他们都打印了他们的版本,我 运行 在 OpenCV 上进行了简单的相机测试)

这个问题描述得很好。我在 macOS M1 芯片中的 NetCDF4 库中遇到了同样的问题。 就我而言 (NetCDF4@1.5.8) 使用 brew 和 pip 安装库并没有解决问题,因为提供的包与 M1 芯片不兼容。 该问题将按照他们在 NetCDF@1.6.0.

中的 Github 中所述解决

在这种情况下,我建议:

首先确保您安装了您在系统中使用的库(在本例中为 recordclass)的依赖项,以防您使用虚拟环境,而不仅仅是在环境中。

其次检查库轮是否符合你的机器要求