安装llama-cpp-python遇架构不兼容(x86_64而非arm64)求助
问题背景
尝试搭建本地高速NLP环境时,无法安装适配arm64架构的llama-cpp-python。执行以下编译安装命令后:
CMAKE_ARGS="-DLLAMA_METAL=on -DLLAMA_METAL_EMBED_LIBRARY=on" \ pip install llama-cpp-python --no-binary llama-cpp-python --force-reinstall --no-cache-dir
导入库时出现架构不兼容错误:
RuntimeError: Failed to load shared library '/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/llama_cpp/lib/libllama.dylib': dlopen(/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/llama_cpp/lib/libllama.dylib, 0x0006): tried: '/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/llama_cpp/lib/libllama.dylib' (mach-o file, but is an incompatible architecture (have 'x86_64', need 'arm64e' or 'arm64')), '/System/Volumes/Preboot/Cryptexes/OS/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/llama_cpp/lib/libllama.dylib' (no such file), '/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/llama_cpp/lib/libllama.dylib' (mach-o file, but is an incompatible architecture (have 'x86_64', need 'arm64e' or 'arm64'))
解决方案
1. 确认Python环境架构
先检查当前Python的架构类型,避免使用Rosetta转译的x86_64版本:
python3 -c "import platform; print(platform.machine())"
若输出为x86_64,需切换到原生arm64版本的Python(如通过Homebrew安装的arm64 Python)。
2. 强制指定arm64编译架构
在安装命令中添加架构指定参数,确保CMake编译出适配arm64的库:
CMAKE_ARGS="-DLLAMA_METAL=on -DLLAMA_METAL_EMBED_LIBRARY=on -DCMAKE_OSX_ARCHITECTURES=arm64" \ ARCHFLAGS="-arch arm64" \ pip install llama-cpp-python --no-binary llama-cpp-python --force-reinstall --no-cache-dir
3. 清理残留编译缓存
如果之前有残留的x86_64编译文件,先彻底清理:
rm -rf ~/.cache/pip rm -rf /Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/llama_cpp
清理完成后重新执行步骤2的安装命令。
4. 验证安装结果
安装完成后,检查生成的库文件架构是否为arm64:
lipo -info /Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/llama_cpp/lib/libllama.dylib
若输出包含arm64,说明安装成功,此时导入llama_cpp即可正常使用。
内容的提问来源于stack exchange,提问作者Dennis Losett

