• M1(arm) Mac安装open3d


    问题

    说在前面:open3d对arm架构的机器支持相对比较晚,所以目前还在完善当中,我试了官方给出的两种方法安装都出现了错误:首先给出官方的安装说明:

    Open3D ARM support

    第一种:conda环境直接使用pip安装,即如下命令:

    pip install open3d

    但是这种情况的大概率会出错,比较常见的两种错误,一个是因为依赖和conda的python版本问题直接报错,还有一种是安装成功了,但是import open3d的时候出现这种错误:

    1. Traceback (most recent call last):
    2. File "", line 1, in <module>
    3. File "/opt/homebrew/Caskroom/miniforge/base/envs/test_env/lib/python3.9/site-packages/open3d/__init__.py", line 97, in <module>
    4. from open3d.cpu.pybind import (camera, data, geometry, io, pipelines,
    5. ImportError: dlopen(/opt/homebrew/Caskroom/miniforge/base/envs/test_env/lib/python3.9/site-packages/open3d/cpu/pybind.cpython-39-darwin.so, 0x0002): symbol not found in flat namespace '_quadmath_snprintf'`

    这个错误也有一些国外网友遇到过,github上有相关的问题阐述和解决,但是我试了好像不太行,给个传送门:open3d 0.16.0: arm64 conda python unable to import due to '_quadmath_snprintf' not found #5607

    第二种:使用源码编译安装,最终在编译完成后出现了其他错误,这里没有记录,所以暂时没有图片参考。


    解决方案

    最终在官方github的问题提交分支里,我找到了一种可行的方法:

    在这里:Open 3D package for Apple silicon M1 #2675

     

    这个方法大概就是下载对应python版本的wheel文件,然后使用pip本地安装即可。

    step 1:下载.whl文件,链接在Apple Silicon Experimental Wheel

    因为我的conda 环境python版本为3.9,所以我下了第二个cp39的,(我才那个数字是对应的python版本吧,不知道,但我测试成功了)。

     

    step 2:安装下载的whl文件

    首先,找到你的文件下载地址,从你的终端进到这个文件夹下,如我的:

    1. kongds@kongds ~$ cd Downloads
    2. kongds@kongds ~/Downloads$ ls
    3. open3d-0.13.0+621176cd9-cp39-cp39-macosx_11_0_arm64.whl

    然后需要启动你用到的conda环境,如果你用的是pycharm,而且使用的是conda的虚拟环境,那你需要先去pycharm里面找打你配置的虚拟环境名:

     如我的,就是py。你可以从终端查看一下当前的conda环境列表,相关命令如下:

    第一条是查看所有的conda 虚拟环境,第二条命令是启动这个名为py的虚拟环境,可以发现前面多了个(py),这就说明启动成功了

    1. kongds@kongds ~/Downloads$ conda info -e
    2. # conda environments:
    3. #
    4. base /opt/anaconda3
    5. py /opt/anaconda3/envs/py
    6. kongds@kongds ~/Downloads$ conda activate py
    7. (py) kongds@kongds ~/Downloads$

    然后就是可以使用如下命令从本地whl安装了:

    (py) kongds@kongds ~/Downloads$ pip install open3d-0.13.0+621176cd9-cp39-cp39-macosx_11_0_arm64.whl

    因为我安装成功没有保存,所以这里没给出运行结果,一般这条就直接成功了。

    这个时候你再从pycharm里面import open3d就可以显示成功了,然后有一段测试程序,你可以随便找一个点云文件来测试:

    1. import open3d as o3d
    2. print("->正在加载点云... ")
    3. pcd = o3d.io.read_point_cloud("bun000.ply")
    4. print(pcd)
    5. o3d.visualization.draw_geometries([pcd])

    给一下我的运行结果:

     至此,就可以愉快地使用open3d进行点云操作了。

  • 相关阅读:
    JUC并发工具类在大厂的应用场景详解
    阿里云ACA证书有什么用?
    排序——归并排序
    解决Python requests库中的重定向问题
    算法竞赛进阶指南 基本算法 0x07 贪心
    【unity记录】导入标准资源包(Standard Assets)
    Python数据分析与机器学习47-维基百科词条EDA
    回归-线性回归算法(房价预测项目)
    《算法竞赛进阶指南》数独
    MySQL之MVCC
  • 原文地址:https://blog.csdn.net/MARS_098/article/details/127696286