python 如何解决ImportError:dlopen():找不到符号:....预期:平面命名空间

yizd12fk  于 2023-05-21  发布在  Python
关注(0)|答案(4)|浏览(423)

有人能帮我解决这个问题吗?

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

我用的是苹果电脑,如果这有关系的话

6ojccjat

6ojccjat1#

我不能完全弄清楚问题是什么,但我假设__PyEval_GetBuiltinId被破坏/卸载。
所以我所做的就是修复这个问题,然后是pip uninstall recordclass,然后是pip install --no-cache-dir recordclass,它似乎已经工作了

nhjlsmyf

nhjlsmyf2#

我遇到了同样的问题,并找到了你的问题。我有一台M1 MacBook,但我认为我们遇到了两个问题。首先,我犯了一个类似的错误:

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上运行了一个简单的相机测试)

cx6n0qe3

cx6n0qe33#

这个问题在here中得到了很好的描述。我在macOS M1芯片中的NetCDF4库也遇到了同样的问题。在我的例子中(NetCDF4@1.5.8),使用brew和pip安装库并没有解决问题,因为提供的包与M1芯片不兼容。这个问题将在NetCDF@1.6.0的Github中得到解决。
在这种情况下,我建议:
首先,确保您安装了您在系统中使用的库(在本例中为recordclass)的依赖项,以防您使用虚拟环境,而不仅仅是在环境中。
第二,检查库的轮子是否符合您的机器要求。

vsnjm48y

vsnjm48y4#

在我的例子中,这发生在M2 Mac Mini和mysqlclient包上。在SO上浏览了各种建议后,对我有效的是以下步骤:
检查系统主机的python使用的版本:

% python3 --version
Python 3.11.1

检查virtualenv使用的版本:(venv)% python3 --版本Python 3.9.13
所以virtualenv使用的是不同的python版本。我删除了virtualenv并安装了一个与主机系统相同版本的新virtualenv:

python3.11 -m venv venv

在那之后,在重新安装导致问题的软件包时,它起作用了。

相关问题