当前位置: 首页 > news >正文

PaddleHub/PaddleOCR + torch/shm.dll 错误解决方案

PaddleHub/PaddleOCR + torch/shm.dll 错误解决方案

我2025-10-21出现的问题当时没有解决方案,我在后续几个月解决后使用了稳定的几版,和最新的paddleOCR,使用的python13,当然12以下和对应的版本都可以用这个解决方案。

问题根本原因

PaddleOCR 3.x 依赖 modelscope,而 modelscope 依赖 torch,但 torch 和 paddle 各自携带了不同版本的 cuDNN,导致 DLL 冲突。

这就是为什么会出现Error loading "torch\\lib\\shm.dll"错误。

Error loading "***\.venv\Lib\site-packages\torch\lib\shm.dll" or one of its dependencies.

解决方案:临时移除 torch 的 cuDNN 文件

让 torch 和 paddle 共用 nvidia 的 cuDNN。

修复命令(在 PowerShell 中运行)

cd"E:\PaddlePaddle_GPU\.venv\Lib\site-packages\torch\lib"mkdir cudnn_backup-ForceMove-Item-Path cudnn*.dll-Destination cudnn_backup\-Force

恢复命令(测试完成后运行)

cd"E:\PaddlePaddle_GPU\.venv\Lib\site-packages\torch\lib"Move-Item-Path cudnn_backup\*.dll-Destination.\-ForceRemove-Itemcudnn_backup-Recurse

完整的代码修复方案(在 Python 脚本中自动处理)

importosimportsysimportctypesimportwarnings warnings.filterwarnings('ignore')# ================== 修复CUDA/cuDNN依赖加载问题 ==================# 获取虚拟环境中的库路径venv_path=os.path.dirname(os.path.dirname(sys.executable))venv_site_packages=os.path.join(venv_path,'Lib','site-packages')nvidia_base=os.path.join(venv_site_packages,'nvidia')torch_lib=os.path.join(venv_site_packages,'torch','lib')defsetup_cuda_paths():"""设置CUDA DLL路径"""# Paddle的CUDA路径nvidia_paths=[os.path.join(nvidia_base,'cudnn','bin'),os.path.join(nvidia_base,'cuda_runtime','bin'),os.path.join(nvidia_base,'nvjitlink','bin'),os.path.join(nvidia_base,'cublas','bin'),os.path.join(nvidia_base,'cufft','bin'),os.path.join(nvidia_base,'cusparse','bin'),os.path.join(nvidia_base,'cusolver','bin'),os.path.join(nvidia_base,'curand','bin'),]# 更新PATHnew_path=os.pathsep.join(nvidia_paths+[pforpinos.environ.get('PATH','').split(os.pathsep)ifpandpnotinnvidia_paths])os.environ['PATH']=new_path# 添加DLL搜索路径ifhasattr(os,'add_dll_directory'):forpathinnvidia_paths:ifos.path.exists(path):try:os.add_dll_directory(path)exceptException:pass# 添加torch的lib目录ifos.path.exists(torch_lib):iftorch_libnotinos.environ.get('PATH',''):os.environ['PATH']=torch_lib+os.pathsep+os.environ.get('PATH','')ifhasattr(os,'add_dll_directory'):try:os.add_dll_directory(torch_lib)exceptException:passreturnnvidia_pathsdefpreload_cudnn(nvidia_paths):"""预加载cuDNN库"""cudnn_dlls=['cudart64_12.dll','nvJitLink_120_0.dll','cublas64_12.dll','cublasLt64_12.dll','cudnn64_9.dll','cudnn_adv64_9.dll','cudnn_cnn64_9.dll','cudnn_ops64_9.dll','cudnn_engines_runtime_compiled64_9.dll','cudnn_heuristic64_9.dll','cudnn_graph64_9.dll','cudnn_engines_precompiled64_9.dll',]fordll_nameincudnn_dlls:fornvidia_pathinnvidia_paths:full_path=os.path.join(nvidia_path,dll_name)ifos.path.exists(full_path):try:ctypes.CDLL(full_path,mode=ctypes.RTLD_GLOBAL)breakexceptException:break# 执行路径设置nvidia_paths=setup_cuda_paths()preload_cudnn(nvidia_paths)# ================== 现在可以正常导入 paddlehub 了 ==================importpaddlehubashub# 你的OCR代码...ocr=hub.Module(name='chinese_ocr_db_crnn_mobile')# ...

文档来源: E:\PaddlePaddle_GPU 中的解决方案
生成时间: 2026-03-31

http://www.jsqmd.com/news/572989/

相关文章:

  • 愚人节前夜大瓜!Claude Code 51 万行源码意外泄露(51万行代码“裸奔“:Claude Code源码泄露事件深度剖析)
  • 如何在Charmbracelet Log中实现结构化日志记录的5个技巧
  • 2.3 从零上手OpenMV:硬件接口详解与STM32通信实战
  • 3层防护构建个人AI助手: Maid跨平台应用的隐私与体验革新
  • 手把手教你用PowerShell脚本,把几百个GitLab仓库一键搬到Gitea(附完整脚本)
  • 从理论到实践:human-pose-estimation.pytorch关键点检测算法原理解析
  • DeEAR语音情感分析教程:使用DeEAR输出构建‘语音情感风格迁移’评估基准
  • Phi-3 Forest Laboratory操作系统知识问答系统:从进程管理到文件系统详解
  • 系统组件维护技术指南:预防机制→诊断体系→分级修复
  • 私有化部署的代码“锁场”:从字节码到硬件指纹的企业级实战
  • 炸了!Claude Code 51.2 万行代码泄露,核心架构完整拆解
  • # 蓝绿部署实战:基于Docker与Nginx的无中断服务更新方案在现代微服务架构
  • 从零到一:基于Rocky Linux 9的K8s高可用集群部署实战(单Master双Node架构)
  • Flink源码阅读:双流操作
  • 深入理解 SQL 中的 DATEDIFF 函数
  • SDXL-Turbo参数详解:1步推理设置、CFG scale调优与英文提示词规范
  • OpenAirInterface项目解析 04 SSB实现
  • Step3-VL-10B-Base模型Python安装与环境变量配置详解
  • 用噪音打破听觉恐怖谷:RTE 开发者社区发布 RealNoise™ TTS:全球首个原生合成动态声场的语音大模型
  • 突破限制的完整方案:开源工具免费解锁Cursor Pro功能实战指南
  • 别再乱选ASCII/HEX了!野火串口调试助手发送接收区配置详解(附实战案例)
  • 实战演练:基于快马平台快速构建开yun架构的物联网监控系统
  • PlugY:暗黑破坏神2单机玩家的开源功能扩展工具
  • STM32智能门锁进阶:RC522 RFID模块SPI通讯与卡号鉴权实战
  • 如何在macOS和Linux上快速解除iOS 15-16设备的iCloud激活锁
  • 3步实现跨平台日历同步:从需求到落地
  • AI辅助技能提升:用快马生成智能代码审查工具,让AI成为你的编程导师
  • 支持400米深井测量与短信报警:地下水位监测站技术解析
  • S2-Pro模型推理服务高可用部署:基于Docker与Kubernetes的架构
  • 文章标题:基于三菱PLC的门禁系统设计与实施