본문 바로가기
정나우/ROS

ImportError: dynamic module does not define module export function (PyInit_cv_bridge_boost)

by 정_나우 2023. 8. 28.

 

1. 문제

 

ROS에서 사용 중인 이미지를 yolo에 넣기 위해 cv_bridge를 이용하려고 합니다.

 

그런데 아래와 같은 오류가 발생했습니다.

ImportError: dynamic module does not define module export function (PyInit_cv_bridge_boost)

2. 해결

 

아래 블로그를 참고해 해결했습니다.

 

 

ImportError: dynamic module does not define module export function (PyInit_cv_bridge_boost) in Xavier AGX

stackoverflow.com/questions/49221565/unable-to-use-cv-bridge-with-ros-kinetic-and-python3 Unable to use cv_bridge with ROS Kinetic and Python3 I had a computer vision project on Ubuntu 14.04 with ROS indigo and python3, then I had to move on Ubuntu 16.04 w

dkqhzm2.tistory.com

 

위 블로그는 Xavier AGX에서 설치하는 명령어이므로 자신의 컴퓨터 환경에 맞게 고쳐줍니다.

(예: DPYTHON_LIBRARY 경로)

sudo apt-get install python-catkin-tools python3-dev python3-catkin-pkg-modules python3-numpy python3-yaml ros-melodic-cv-bridge
mkdir cvbridge_ws
cd cvbridge_ws
git clone https://github.com/ros-perception/vision_opencv.git src/vision_opencv
catkin init
catkin config -DPYTHON_EXECUTABLE=/usr/bin/python3 -DPYTHON_INCLUDE_DIR=/usr/include/python3.6m -DPYTHON_LIBRARY=/usr/lib/python3.6/config-3.6m-x86_64-linux-gnu/libpython3.6m.so
catkin config --install
apt-cache show ros-melodic-cv-bridge | grep Version
cd src/vision_opencv/
git checkout 1.13.1
cd ../../
catkin build cv_bridge
gedit ~/.bashrc
source ~/cvbridge_ws/install/setup.bash --extend # 맨 밑에 추가하기
source ~/.bashrc

 

빌드 중

No rule to make target '/usr/lib/aarch64-linux-gnu/libpython3.6m.so', needed by '/home/irl/catkin_ws/devel/.private/cv_bridge/lib/python3/dist-packages/cv_bridge/boost/cv_bridge_boost.so'.  Stop.

이런 오류가 떴다면 libpython3.6m.so의 경로가 잘못 된 겁니다.

 

dpkg -L libpython3.6

위 명령어로 libpython3.6의 경로를 찾아서

catkin config -DPYTHON_EXECUTABLE=/usr/bin/python3 -DPYTHON_INCLUDE_DIR=/usr/include/python3.6m -DPYTHON_LIBRARY=/usr/lib/aarch64-linux-gnu/libpython3.6m.so

위에서 입력했던 명령어의 경로를 바꿔주고 다시 빌드해줍니다.

 

/usr/lib/python3.6/config-3.6m-x86_64-linux-gnu/libpython3.6m.so

/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1

둘 다 해봤는데 둘 다 됩니다.

 

경로 바꿨으면 workspace 지우고 처음부터 다시하기!

 

빌드가 완료되었으면 잘 설치되었는지 확인합니다.

TEST
$ python3
Python 3.5.2 (default, Nov 23 2017, 16:37:01)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from cv_bridge.boost.cv_bridge_boost import getCvType
>>>

 

+추가

다른 블로그에서는 catkin_make로도 컴파일하던데

저는 catkin build로만 되네요.

 

혹시 이렇게 해도 오류가 뜬다면 ROS를 삭제 후 재설치해보세요

 

ROS 삭제후 재설치

삭제 sudo apt-get remove ros-* sudo apt-get remove ros-melodic-* sudo apt-get autoremove 설치 sudo apt update sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654 sudo apt update sudo apt inst

kumoh-irl.tistory.com

 

댓글