python打包open3d问题
python打包open3d问题
问题
因为项目需要,所以使用了open3d库,通常使用pyinstaller打包程序,可执行程序都可以正常运行,但是在包含open3d库后,打包报错
执行时报错
OSError: libc++.so.1: cannot open shared object file: No such file or directory
实际寻找了对应的库,包含后进行pyinstaller打包,仍然报错
该问题也被提问到open3d的开源库中,其解释方法不可用
https://github.com/isl-org/Open3D/issues/6136
解决
寻找了相关问题,其对应的libc++.so.1相关库文件都是正常存在的,但是pyinstaller打包的时候就是找不到
方法1
程序报错时说是找不到
先查询对应链接库位置
find / -name libc++.so.1
将链接库加入到编译中
打开.spec,修改binaries参数如下
重新编译即可
pyinstaller hello.spec
方法2
如果pyinstaller实在无法和open3d适配,可以使用其他打包工具,这里使用到了nuitka
安装
pip install -U nuitka
写一个hello.py程序测试
print("hello")
使用nuitka进行打包
nuitka --static-libpython=no --lto=no --include-package=encodings hello.py
成果为hello.bin,执行不报错,修改为包含open3d库的代码打包后也不报错。