ubuntu环境pyinstaller打包fastdeploy程序报错解决记录(tensorrt/lib/libnvcaffe_parser.so.8 by an unprivileged user)

1、问题描述

在ubuntu22.04环境中使用pyinstaller将fastdeploy的python程序打包为可执行文件后报错,报错信息为:

WARNING:root:Failed to create a symbolic link pointing to /root/YXZTSB/dist/yxztsb/_internal/fastdeploy/libs/third_libs/tensorrt/lib/libnvcaffe_parser.so.8 by an unprivileged user. It may failed when you use Paddle TensorRT backend. Please use administator privilege to import fastdeploy at first time.
terminate called after throwing an instance of 'ov::Exception'
  what():  Failed to find plugins.xml file
Aborted

报错信息的翻译为:警告:root:非特权用户无法创建指向 /root/YXZTSB/dist/yxztsb/_internal/fastdeploy/libs/third_libs/tensorrt/lib/libnvcaffe_parser.so.8 的符号链接。当您使用 Paddle TensorRT 后端时,它可能会失败。请在首次使用管理员权限导入 fastdeploy。
抛出“ov::Exception”实例后调用终止
what(): 找不到plugins.xml文件
中止

在这里插入图片描述

在本博文中打包命令为:pyinstaller yxztsb.py

2、分析与解决

2.1 原始报错分析

根据报错信息的翻译,是跟/root/YXZTSB/dist/yxztsb/_internal/fastdeploy/libs/third_libs/tensorrt/lib/目录下的一个so文件有关,故而进入目录进行查看。

cd /root/YXZTSB/dist/yxztsb/_internal/fastdeploy/libs/third_libs/tensorrt/lib/
ls
ls -l #查看详细信息

执行命令后,可以看到存在两个文件是红色的(具体为:libnvcaffe_parser.so; libnvcaffe_parser.so),应该是存在问题(软连接对应的文件不存在,故而为红色;软连接对应的文件要是在的话,应该是淡蓝色)。同时,这两个也是fastdeploy库的的文件。故而对fastdeploy库进行分析。
在这里插入图片描述

2.2 fastdeploy库分析

通常在python库import的库,与其安装包名是一样的。但在某些时候可能不一样,为了保险起见,故而我们先执行 pip show查看一下安装的包名。根据下图,可知fastdeploy库在pip命令中的完整名称是fastdeploy-gpu-python

在这里插入图片描述
接下来执行 pip show fastdeploy-gpu-python,可以找到fastdeploy-gpu-python库的安装路径
在这里插入图片描述
执行 cd /root/miniconda3/lib/python3.9/site-packages/fastdeploy 进入fastdeploy库的目录下,然后找到与与原始报错信息中/fastdeploy/libs/third_libs/tensorrt/lib/相关的目录,故此可以使用以下命令

cd /root/miniconda3/lib/python3.9/site-packages/fastdeploy/libs/third_libs/tensorrt/lib/
ls -l

可以看到原始报错信息中的libnvcaffe_parser.so、 libnvcaffe_parser.so文件都是正常存在的,只是pyinstaller打包时so文件拷贝失败了。
在这里插入图片描述
此时,将原来pyinstaller生成的错误软连接删除,然后将fastdeploy库中默认的so文件拷贝到软件安装包路径下

cd /root/miniconda3/lib/python3.9/site-packages/fastdeploy/libs/third_libs/tensorrt/lib/
rm ~/YXZTSB/dist/yxztsb/_internal/fastdeploy/libs/third_libs/tensorrt/lib/libnvcaffe_parser.so 
rm ~/YXZTSB/dist/yxztsb/_internal/fastdeploy/libs/third_libs/tensorrt/lib/libnvparsers.so 
cp libnvcaffe_parser.so ~/YXZTSB/dist/yxztsb/_internal/fastdeploy/libs/third_libs/tensorrt/lib/
cp libnvparsers.so ~/YXZTSB/dist/yxztsb/_internal/fastdeploy/libs/third_libs/tensorrt/lib/

通过以上拷贝后,原始的报错解决了。但还是存在一个报错未解决,具体如下所示:
在这里插入图片描述

2.3 ov::Exception报错解决

经过步骤2.1->2.2后,还是存在一个报错。将关键信息复制到浏览器搜索后,发现是openvino打包的错。但是,使用pip show进行查看,可以发现本环境是没有安装openvino库的,想必是在fastdeploy中的openvino库。
在这里插入图片描述
对python包安装目录下的fastdeploy库中的openvino进行查找,找到plugins.xml 文件的路径,拷贝到pyinstaller导出的程序的对应目录下。具体命令如下:

cp /root/miniconda3/lib/python3.9/site-packages/fastdeploy/libs/third_libs/openvino/runtime/lib/plugins.xml  /root/YXZTSB/dist/yxztsb/_internal/fastdeploy/libs/third_libs/openvino/runtime/lib

我们也可以使用以下命令,将系统库中的fastdeploy库全部拷贝到pyinstaller生成的包目录下。

cp -rf /root/miniconda3/lib/python3.9/site-packages/fastdeploy/libs /root/YXZTSB/dist/yxztsb/_internal/fastdeploy/

执行完以上修改后,再次执行程序,出现以下报错
在这里插入图片描述

2.4 cannot open shared object file

2.3章节中最后的报错为找不到so文件,这应该是环境变量配置的问题。参考https://blog.csdn.net/weixin_37801214/article/details/109599668进行解决。
步骤一:find / -name libmklml_intel.so
步骤二: export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/root/miniconda3/lib/python3.9/site-packages/fastdeploy/libs/third_libs/paddle_inference/third_party/install/mklml/lib/

命令执行效果如下所示
在这里插入图片描述
通过以上步骤后,终于实现fastdeploy程序的正常运行。
在这里插入图片描述

  • 22
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
解析这个报错INTEL MKL ERROR: dlopen(/Users/baiminchen/opt/anaconda3/lib/libmkl_core.1.dylib, 0x0009): tried: '/Users/baiminchen/opt/anaconda3/lib/libmkl_core.1.dylib' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/Users/baiminchen/opt/anaconda3/lib/libmkl_core.1.dylib' (no such file), '/Users/baiminchen/opt/anaconda3/lib/libmkl_core.1.dylib' (no such file). Intel MKL FATAL ERROR: Cannot load libmkl_core.1.dylib. Traceback (most recent call last): File "/Users/baiminchen/opt/anaconda3/lib/python3.9/site-packages/PyInstaller/isolated/_parent.py", line 373, in call return isolated.call(function, *args, **kwargs) File "/Users/baiminchen/opt/anaconda3/lib/python3.9/site-packages/PyInstaller/isolated/_parent.py", line 302, in call ok, output = loads(b64decode(self._read_handle.readline())) EOFError: EOF read where object expected During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/Users/baiminchen/opt/anaconda3/bin/pyinstaller", line 8, in <module> sys.exit(_console_script_run()) File "/Users/baiminchen/opt/anaconda3/lib/python3.9/site-packages/PyInstaller/__main__.py", line 194, in _console_script_run run() File "/Users/baiminchen/opt/anaconda3/lib/python3.9/site-packages/PyInstaller/__main__.py", line 180, in run run_build(pyi_config, spec_file, **vars(args)) File "/Users/baiminchen/opt/anaconda3/lib/python3.9/site-packages/PyInstaller/__main__.py", line 61, in run_build PyInstaller.building.build_main.main(pyi_config, spec_file, **kwargs) File "/Users/baiminchen/opt/anaconda3/lib/python3.9/site-packages/PyInstaller/building/build_main.py", line 971, in main build(specfile, distpath, workpath, clean_build) File "/Users/baiminchen/opt/anaconda3/lib/python3.9/site-packages/PyInstaller/building/build_main.py", line 893, in build exec(code, spec_namespace) File "/Users/baiminchen/Desktop/database of xinstitute/main.spec", line 7, in <module> a = Analysis( File "/Users/baiminchen/opt/anaconda3/lib/python3.9/site-packages/PyInstaller/building/build_main.py", line 378, in __init__ self.hookspath += discover_hook_directories() File "/Users/baiminchen/opt/anaconda3/lib/python3.9/site-packages/PyInstaller/isolated/_parent.py", line 404, in wrapped return call(function, *args, **kwargs) File "/Users/baiminchen/opt/anaconda3/lib/python3.9/site-packages/PyInstaller/isolated/_parent.py", line 373, in call return isolated.call(function, *args, **kwargs) File "/Users/baiminchen/opt/anaconda3/lib/python3.9/site-packages/PyInstaller/isolated/_parent.py", line 244, in __exit__ self._write_handle.flush() BrokenPipeError: [Errno 32] Broken pipe
02-06

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

摸鱼的机器猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值