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

解决报错:ModuleNotFoundError: No module named ‘_pafprocess‘

目录

一、报错分析

1、报错描述

2、原因分析

二、解决方法

1、安装swig

(1)命令行安装方法

(2) Windows安装方法

2、配置环境变量

(1)配置方法

(2)安装验证

3、编译pafprocess

(1)进入源码目录

(2)编译生成链接库


在编译tf-pose-estimation进行2D人体姿态识别时,遇到了ModuleNotFoundError: No module named '_pafprocess'的错误,本文分析报错原因并给出解决方案。

Traceback (most recent call last):File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named '_pafprocess'

一、报错分析

1、报错描述

TF-Pose-Estimation 是一个基于 TensorFlow 的开源库,专注于 2D 人体姿态估计(Human Pose Estimation)。它能够从图像或视频中检测人体的关键点(如关节、四肢等),适用于动作识别、运动分析、虚拟试衣等场景。

在编译基于tensorflow的开源代码TF-Pose-Estimation时,遇到了“ModuleNotFoundError: No module named '_pafprocess'”错误,具体如下图所示。

此错误表明 Python 在运行时无法找到名为 _pafprocess 的模块,_pafprocess 是人体姿态估计库的核心组件,用于处理 Part Affinity Fields (PAF) 的 C++ 扩展模块。其文件形式应为:

  • Windows_pafprocess*.pyd

  • Linux/Mac_pafprocess*.so

2、原因分析

进入到TF-Pose-Estimation源码的pafprocess目录中,在其tf_pose\pafprocess目录中,以我的电脑为例,具体如下所示。

#源码目录:
C:\Users\Administrator\PycharmProjects\nn\01 Deep Pytorch\22 Keypoints-of-humanpose\tf-pose-estimation\tf-pose-estimation#pafprocess子目录
C:\Users\Administrator\PycharmProjects\nn\01 Deep Pytorch\22 Keypoints-of-humanpose\tf-pose-estimation\tf-pose-estimation\tf_pose\pafprocess

在pafprocess源码目录中打开Readme.md,提示需要安装swig,编译_pafprocess模块,具体如下所示。

二、解决方法

1、安装swig

SWIG(Simplified Wrapper and Interface Generator,简化封装器和接口生成器)是一个开源工具,用于将 C/C++ 代码自动转换为多种高级语言的接口(如 Python、Java、C#、Ruby 等)。它的核心作用是消除不同语言间的调用壁垒,使开发者能直接在 Python 等语言中调用 C/C++ 库,无需手动编写繁琐的绑定代码。

(1)命令行安装方法

# Linux (Debian/Ubuntu)
sudo apt-get install swig# macOS (Homebrew)
brew install swig# Windows (conda)
conda install swig -c conda-forge

(2) Windows安装方法

在官网下载后解压缩, 官网的链接为SWIG官网下载,点击如下红框内容即可下载。

将下载的swigwin-4.3.1.zip进行解压缩,进入到解压缩后的swig文件夹,可以看到有 swig.exe 在文件夹内。以我的电脑为例解压后目录为C:\Users\Administrator\Downloads\swigwin-4.3.1。

2、配置环境变量

(1)配置方法

将 swig.exe 所在路径添加至系统变量 Path 中的步骤如下:

  • 右键点击“此电脑”或“我的电脑”,选择“属性”。

  • 点击“高级系统设置” > “环境变量”。
  • 编辑 Path 变量,点击新建,输入 SWIG 的目录路径。
  • 点击确定保存。

(2)安装验证

打开新的命令提示符(CMD/PowerShell),运行swig -version,如果显示版本信息则代表配置成功。如下所示,即代表安装成功

3、编译pafprocess

(1)进入源码目录

进入到pafprocess源码目录,效果如下所示。

(2)编译生成链接库

执行如下编译命令,命令通过 SWIG 将 C++ 代码(pafprocess.i 中定义)自动转换为 Python 可调用的接口(生成 pafprocess_wrap.cxx 和 pafprocess.py),再通过 Python 的 setuptools 编译生成动态链接库(_pafprocess.so/pyd)。

swig -python -c++ pafprocess.i && python setup.py build_ext --inplace

执行结果如下所示,输出显示C++扩展模块_pafprocess已成功编译完成,生成了适用于64位Windows系统、Python 3.7环境的.pyd动态链接库文件。

tf-pose-estimation\tf_pose\pafprocess\pafprocess.h(10): warning C4305: “初始化”: 从“double”到“float”截断
pafprocess.cpp(64): warning C4244: “=”: 从“int”转换到“float”,可能丢失数据
pafprocess.cpp(65): warning C4244: “=”: 从“int”转换到“float”,可能丢失数据
pafprocess.cpp(83): warning C4244: “初始化”: 从“_Ty”转换到“float”,可能丢失数据with[_Ty=double]
pafprocess.cpp(147): warning C4244: “=”: 从“int”转换到“_Ty”,可能丢失数据with[_Ty=float]
pafprocess.cpp(167): warning C4244: “=”: 从“int”转换到“_Ty”,可能丢失数据with[_Ty=float]
pafprocess.cpp(174): warning C4244: “=”: 从“int”转换到“_Ty”,可能丢失数据with[_Ty=float]
pafprocess.cpp(175): warning C4244: “=”: 从“int”转换到“_Ty”,可能丢失数据with[_Ty=float]
pafprocess.cpp(186): warning C4267: “初始化”: 从“size_t”转换到“int”,可能丢失数据
pafprocess.cpp(195): warning C4267: “return”: 从“size_t”转换到“int”,可能丢失数据
pafprocess.cpp(199): warning C4244: “return”: 从“_Ty”转换到“int”,可能丢失数据with[_Ty=float]
pafprocess_wrap.cpp正在创建库 build\temp.win-amd64-cpython-37\Release\_pafprocess.cp37-win_amd64.lib 和对象 build\temp.win-amd64-cpython-37\Release\_pafprocess.cp37-win_amd64.exp
正在生成代码
已完成代码的生成

再次编译程序,错误不再出现,程序能够顺利运行。

http://www.dtcms.com/a/294578.html

相关文章:

  • 测试左移方法论
  • NX741NX777美光固态闪存NX783NX791
  • 算法思想之队列
  • 精准医学在肿瘤治疗中的应用案例研究
  • 终端VS命令解释器(Linux Windows)
  • 一招拿捏Windows的软件,仅仅1.22M
  • 如何硬解析 .shp 文件中的几何体,拯救 .dbf、.shx 等文件缺失的 ESRI Shapefile 格式文件
  • (Python)类的练习与巩固(图书管理系统扩展)(类与方法的基础教程)(if条件扩展)(动态类型)(Python教程)
  • LLC协议支持哪些类型的帧?它们各自的功能是什么?
  • IAR Embedded Workbench for ARM 8.1 安装教程
  • 深兰科技陈海波:AI企业出海要坚持“区域深耕”与“长期主义”
  • 《设计模式之禅》笔记摘录 - 9.责任链模式
  • 使用Ollama,VLLM,LMDeploy部署大模型
  • 二分查找-162.寻找峰值-力扣(LeetCode)
  • P1040 [NOIP 2003 提高组] 加分二叉树
  • 小米浏览器overflow不能左右滑动
  • spring-cloud概述
  • (Arxiv-2025)OVIS-U1技术报告
  • 想曰加密工具好用吗?本地安全、支持多算法的加密方案详解
  • NTC热敏电阻计算公式
  • 【大模型】Hugging Face常见模型格式详解
  • 【硬件-笔试面试题】硬件/电子工程师,笔试面试题-6,(知识点:二极管,少子多子,扩散/漂移运动)
  • mysql中ROW_NUMBER()、RANK()、DENSE_RANK()用法及区别
  • 在AI深度嵌入企业业务的当下——AI时代的融合数据库
  • 知己知彼:深入剖析跨站脚本(XSS)攻击与防御之道
  • React+Three.js实现3D场景压力/温度/密度分布可视化
  • 使用 piano_transcription_inference将钢琴录音转换为 MIDI
  • 2.4 PNIO-CM
  • 初级网安作业笔记3
  • opencv学习(视频读取)