|
问题说明:使用onnxruntime-gpu完成了深度学习模型部署,但在打包时发生了报错:找不到CUDA具体问题描述:RuntimeError:\a\_work\1\s\onnxruntime\python\onnxruntime_pybind_state.cc:857onnxruntime::python::CreateExecutionProviderInstanceCUDA_PATHissetbutCUDAwasntabletobeloaded.PleaseinstallthecorrectversionofCUDAandcuDNNasmentionedintheGPUrequirementspage (https://onnxruntime.ai/docs/execution-providers/CUDA-ExecutionProvider.html#requirements), makesurethey'reinthePATH,andthatyourGPUissupported前提:1、确保你的GPU受CUDA支持,并且驱动程序已正确安装2、电脑上已经安装与onnxruntime-gpu对应版本的cuda和cudnn,并加入了环境变量3、打包之前可以正常运行解决方案onnxruntime-gpu 依赖于一些动态链接库,这些库可能不会被 pyinstaller 自动检测到。你可以创建一个自定义的 hook-onnxruntime.py 文件来帮助 pyinstaller 正确识别 onnxruntime-gpu 的依赖项。在项目目录下,创建一个hook-onnxruntime.py文件,并加入以下代码:fromPyInstaller.utils.hooksimportcollect_dynamic_libshiddenimports=['onnxruntime','onnxruntime.capi','onnxruntime.capi.onnxruntime_pybind11_state']binaries=collect_dynamic_libs('onnxruntime')然后在pyinstaller命令中,使用:pyinstaller--onefile--additional-hooks-dir=.-wmain.py--onefile:将所有的文件和依赖打包成一个单独的可执行文件--additional-hooks-dir=.:指定一个额外的目录,pyinstaller 会在这个目录中查找自定义的钩子(hooks)文件。钩子文件用于在打包过程中处理一些特殊的依赖或行为。. 表示当前目录,即在当前目录中查找钩子文件-wmain.py:指定需要打包的py文件,不带控制台窗口打包pyinstaller常用命令参数基本参数-For--onefile:将所有内容打包成一个单独的可执行文件-Dor--onedir:将所有内容打包成一个目录-wor--windowedor--noconsole:对于Windows和MacOSX,不带控制台窗口打包添加数据文件--add-data:添加额外的数据文件到打包的应用程序中;在Windows上使用;分隔,在Unix上使用 : 分隔,例如:pyinstaller--add-data"data/file.txt;data"--add-binary:添加二进制文件到打包的应用程序中,例:pyinstaller--add-binary"/path/to/binary;bin"--icon:设置可执行文件的图标--version:添加版本信息文件--hidden-import:指定在脚本中没有直接导入的模块--exclude-module:排除指定的模块其他参数-nor--name:指定生成的可执行文件的名称--clean:在构建之前清理PyInstaller缓存和临时文件--key:使用指定的密钥对Python字节码进行加密
|
|