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.csdn.net/shanglianlm/article/details/88797529】

a)下載pcre-8.41:https://blog.csdn.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即可成功。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章