M1 Mac上使用GF Python bindings时出现'_gu_null_variant'符号未找到错误的解决方法咨询
M1 Mac上使用GF Python bindings时出现'_gu_null_variant'符号未找到错误的解决方法咨询
我之前在M1 Mac上折腾GF的Python绑定时也碰到过类似的符号缺失问题,大概率是因为预编译的pgf包和M1的arm64架构不兼容,或者依赖的底层库没正确安装导致的。你可以试试下面这几个方案:
首先,先把现有的pgf包彻底卸载干净:
pip uninstall -y pgf
方案一:用Rosetta 2兼容模式安装
M1 Mac的Rosetta 2可以模拟x86_64环境,很多x86的预编译包在这个环境下能正常运行:
- 找到「终端.app」,右键选择「显示简介」,勾选「使用Rosetta打开」,然后重启终端
- 在这个Rosetta终端里,用x86版本的Python重新安装pgf:
arch -x86_64 python -m pip install pgf
安装完成后,就用这个Rosetta终端运行你的Python脚本试试。
方案二:从源码编译安装GF和Python绑定
如果兼容模式不行,直接从源码编译能确保适配arm64架构:
- 先安装编译依赖,比如用Homebrew安装stack:
brew install stack
- 获取GF的源码包(可以下载官方源码压缩包解压),进入GF的源码根目录
- 用stack编译并安装GF:
stack install gf
- 进入源码里的Python绑定目录,编译安装pgf包:
cd python python setup.py install
方案三:检查并配置库路径
有时候是因为系统找不到GF的底层库,你可以把GF的库目录加到环境变量里:
export DYLD_LIBRARY_PATH=/usr/local/lib:$DYLD_LIBRARY_PATH
(如果你的GF安装在其他路径,就把/usr/local/lib换成对应的lib目录路径)
之后再运行你的脚本试试。
另外,你遇到的具体错误信息如下:
Traceback (most recent call last): File "wrapper.py", line 1, in <module> import pgf ImportError: dlopen(/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/pgf.cpython-311-darwin.so, 0x0002): symbol not found in flat namespace '_gu_null_variant'
备注:内容来源于stack exchange,提问作者Brownie
相关产品推荐
相关产品推荐

