M1 Pro Max笔记本Open3D库安装后无法加载求助
问题
M1 Pro Max笔记本,已安装Python 3.9.1并通过pip安装Open3D库,运行以下代码时加载失败:
import sys print(sys.version) import platform print(platform.platform()) import numpy as np import open3d as o3d print("Load a ply point cloud, print it, and render it") pcd = o3d.io.read_point_cloud("data/bun315.ply") print(pcd) print(np.asarray(pcd.points)) o3d.visualization.draw_geometries([pcd])
报错信息:
3.9.1 (v3.9.1:1e5d33e9b9, Dec 7 2020, 12:44:01) [Clang 12.0.0 (clang-1200.0.32.27)] macOS-12.5.1-arm64-arm-64bit Traceback (most recent call last): File "/Users/abdelnasser/Desktop/point clouds/bunny/hello.py", line 8, in <module> import open3d as o3d File "/Users/abdelnasser/Library/Python/3.9/lib/python/site-packages/open3d/__init__.py", line 97, in <module> from open3d.cpu.pybind import (camera, data, geometry, io, pipelines, ImportError: dlopen(/Users/abdelnasser/Library/Python/3.9/lib/python/site-packages/open3d/cpu/pybind.cpython-39-darwin.so, 0x0002): Library not loaded: '/opt/homebrew/opt/libomp/lib/libomp.dylib' Referenced from: '/Users/abdelnasser/Library/Python/3.9/lib/python/site-packages/open3d/cpu/pybind.cpython-39-darwin.so' Reason: tried: '/opt/homebrew/opt/libomp/lib/libomp.dylib' (no such file), '/usr/lib/libomp.dylib' (no such file)
此前安装并卸载过Homebrew,该库在Intel和M2 Air设备上可正常运行。
解决方案
方案1:重新安装Homebrew并补装libomp
arm64架构下的Open3D pip包编译时依赖Homebrew提供的libomp,卸载Homebrew会删除该库,重新安装即可解决:
# 安装Homebrew /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" # 安装libomp brew install libomp
安装完成后重新运行代码即可。
方案2:手动安装libomp并配置环境变量
若不想重新安装Homebrew,可手动获取libomp库并指定路径:
- 从LLVM官网下载适配arm64 macOS的libomp二进制包
- 将解压后的
libomp.dylib复制到/usr/local/lib目录(若目录不存在需先创建:sudo mkdir -p /usr/local/lib) - 临时配置环境变量使系统能找到该库:
export DYLD_LIBRARY_PATH="/usr/local/lib:$DYLD_LIBRARY_PATH"
若需永久生效,可将上述命令添加到~/.zshrc或~/.bash_profile文件中,保存后执行source ~/.zshrc生效。
方案3:使用conda安装Open3D
conda会自动管理依赖库,无需依赖Homebrew:
- 安装conda(若未安装)
- 执行以下命令安装Open3D:
conda install -c open3d-admin open3d
安装完成后切换到conda环境运行代码即可。
方案4:从源码编译Open3D(进阶)
若上述方案均不适用,可从源码编译Open3D,编译时指定系统自带的clang或手动指定libomp路径,步骤如下:
- 克隆Open3D源码:
git clone https://github.com/isl-org/Open3D.git - 创建编译目录并进入:
cd Open3D && mkdir build && cd build - 用CMake配置编译选项(指定不依赖Homebrew的路径):
cmake -DCMAKE_INSTALL_PREFIX=/usr/local -DOPEN3D_BUILD_PYTHON_MODULE=ON ..
- 编译并安装:
make -j8 && sudo make install
内容的提问来源于stack exchange,提问作者delway
相关产品推荐
相关产品推荐

