Python package deploy

cassisOrg·2024년 3월 17일

3월 2주차

목록 보기
1/3

< 기존 접근 방법 >


1. code 난독화 ex) Python Obfuscator, 암호화 ex) Python Obfuscator, gpg

> gpg는 암호화는 해킹대비. 사용자가 쉽게 해제 가능
> obfuscator 는 코드를 헥사코드로 변환해줌. 
  1. 실행파일로 배포 ex) pyinstaller .exe

    일반 파이썬 파일이 아닌 ros 패키지를 실행파일로 만드는건 난이도가 너무 높음..



< 대안 제시 >


빌드 후에 workspace/src 기존 패키지 폴더는 삭제해도 해당 패키지 명령어 사용가능(ros2 run, ros2 launch etc..)
python은 안됨. cython은 되지만 build/ install/ 폴더에 기존 .py파일 지우면 안됨. c++ 패키지(ament_cmake)는 됨.

  1. cython 형태로 변경해서 컴파일

    cython이란? python은 cpython으로 구성되어있음. cython은 python이 cpyhon에 접근하기 쉽도록 해주는 이 둘의 중간단계 언어
    컴파일이 가능.

참고:

python 파일을 cython 파일로 빌드

https://stackoverflow.com/questions/72168194/how-to-cythonize-a-python-ros2-package-in-order-to-hide-the-source-code

  1. 기존 python 파일을 C++ 파일로 변경

    그냥 cpp 파일로 변경하는 걸로 결정.
    과정은 컴파일 후 기존 패키지 삭제가 끝
    c++ 은 빌드 후 build/ install/ 내부에 기존 파일 생성 X 컴파일 되어 확인할 수 없음.

<결론>


cython 파일로 빌드하는 걸로 결정

nav2는 c++ command api를 제공하지 않음.
참고 : Steve Macenski 형님의 칼거절

https://github.com/ros-planning/navigation2/issues/3079

0개의 댓글