setup.py와 entry_points
파일은 my_node.py인데, 왜 ros2 run에는 my_node라고 칠까?
setup.py
파이썬 패키지의 설치 안내서
setup.py는 빌드할 때 무엇을 어디에 설치할지 적은 파이썬 파일입니다. 그 가운데 entry_points의 console_scripts가 ros2 run에 칠 명령 이름을 정합니다.
중요한 줄만 보이고 들여쓰기를 줄였습니다. 설명·관리자·라이선스는 package.xml과 똑같이 맞춰 둡니다.
한 줄 읽기
이름 = 모듈 : 함수
등호 왼쪽은 명령 이름, 오른쪽은 실행할 함수의 위치입니다. my_package.my_node:main은 "안쪽 my_package 폴더의 my_node.py에 있는 main 함수"라는 뜻입니다. 그래서 ros2 run my_package my_node를 치면 그 main이 불립니다.
어디에 생기나
빌드하면 lib 아래에 실행 파일이 생깁니다
빌드하면 이 줄을 보고 my_node라는 작은 실행 파일이 install/my_package/lib/my_package에 생깁니다. ros2 run은 이 자리에서 실행 파일을 찾습니다.
실행 파일을 lib/my_package에 두라고 정한 것이 3편에서 본 setup.cfg입니다.
노드 더하기
파일을 만들면 한 줄도 더합니다
새 노드 파일 talker.py를 만들었다면 console_scripts에 'talker = my_package.talker:main'을 더하고 다시 빌드합니다. 명령 이름은 파일 이름과 달라도 됩니다. 목록이니 줄 끝 쉼표를 잊지 마세요.
talker는 예시 이름입니다. 말하는 노드는 6강 5편에서 직접 짭니다.
빠뜨리면
줄이 없으면 실행 파일이 없습니다
No executable found는 패키지는 찾았지만 그 이름의 실행 파일이 없다는 뜻입니다. talker.py 파일이 있어도 console_scripts에 줄이 없거나, 줄을 적은 뒤 다시 빌드하지 않으면 실행 파일이 생기지 않습니다.
패키지 자체를 못 찾는 오류는 따로 있습니다. 7편에서 봅니다.
data_files
코드 말고 함께 설치할 파일
setup.py의 data_files는 코드가 아닌 파일을 어디에 설치할지 정합니다. 처음에는 패키지 표시 파일과 package.xml 두 개가 들어 있습니다. ROS 2 도구는 이 설치된 사본을 보고 패키지를 찾습니다.
런치 파일(10강 8편)과 파라미터 YAML 파일(8강 6편)도 여기에 더해 설치합니다.
다음 편