python工程中c++代码的编译
运行openpose测试代码(demo/picture_demo.py)时出现报错:
File "/xxx/pytorch_Realtime_Multi-Person_Pose_Estimation/lib/utils/paf_to_pose.py", line 7, in <module>
from lib.pafprocess import pafprocess
ImportError: cannot import name 'pafprocess'
解决过程:
1)查看lib\pafprocess中的文件,发现是c++代码,需要先对其进行编译。
2)编译c++代码,在终端执行:
cd lib/pafprocess
sh make.sh
报错:
需要安装swig:【https://blog.****.net/shanglianlm/article/details/88797529】
a)下载pcre-8.41:https://blog.****.net/shanglianlm/article/details/88797529
下载swig:https://sourceforge.net/projects/swig/files/swig/
b)安装pcre
tar -zxvf pcre-8.41.tar.gz
chmod -R 777 pcre-8.41
cd pcre-8.41/
./configure
make
sudo make install
c)安装swig到默认目录
tar -xzvf swig-4.0.1.tar.gz
cd swig-4.0.1
./configure
make
sudo make install
d)查看swig版本
swig -version
报错:swig: error while loading shared libraries: libpcre.so.1: cannot open shared object file: No such file or directory
执行:ldd $(which swig)
手动添加链接:ln -s /usr/local/lib/libpcre.so.1 /lib
完毕后再次运行:swig -version
3)再次在终端执行:
cd lib/pafprocess
sh make.sh
即可编译成功,发现lib\pafprocess路径下多出了pafprocess.py、_pafprocess.cpython-36m-x86_64-linux-gnu.so等文件。
4)运行demo/picture_demo.py
报错:
File "/xxx/BehaviorDetection/pytorch_Realtime_Multi-Person_Pose_Estimation/lib/pafprocess/pafprocess.py", line 13, in <module>
from . import _pafprocess
ImportError: cannot import name '_pafprocess'
解决:将/xxx/BehaviorDetection/pytorch_Realtime_Multi-Person_Pose_Estimation/lib/pafprocess/目录下的_pafprocess.cpython-36m-x86_64-linux-gnu.so名字改为:_pafprocess.so即可成功。