Build python pkg to cython

cassisOrg·2024년 3월 17일

3월 2주차

목록 보기
2/3
from setuptools import find_packages, setup
from glob import glob
from Cython.Build import cythonize    # added
import os

package_name = 'cython_test'

files = package_name + "/*.py"   # added
setup(
    ext_modules=cythonize(files,compiler_directives={'language_level' : "3"},force=True,quiet=True),       # added
    name=package_name,
    version='0.0.0',
    packages=find_packages(exclude=['test']),
    data_files=[
        ('share/ament_index/resource_index/packages',
            ['resource/' + package_name]),
        ('share/' + package_name, ['package.xml']),
        (os.path.join('share', package_name, 'launch'), glob(os.path.join('launch', '*launch.[pxy][yma]*')))
        
    ],
    install_requires=['setuptools', "wheel",  "Cython"],  # added
    zip_safe=True,
    maintainer='ros2',
    maintainer_email='ros2@todo.todo',
    description='TODO: Package description',
    license='TODO: License declaration',
    tests_require=['pytest'],
    entry_points={
        'console_scripts': [
            'cython_test = cython_test.cython_test:main',
        ],
    },
)

python package의 setup.py 을 위와 같이 설정한다.

launch file에 대해서는 cython화를 적용하지 않음.

colcon build 이후

빌드 이후 기존 src 폴더에서 cython_test 패키지제거

build, install 파일에서 복사된 python 파일 제거

(위의 setup.py 설정으로 빌드 시 기존 파이썬 파일과 cython화된 파일 두 개 다 빌드 하는 방식
이므로 기존 파이썬 파일 제거 후에도 사용 가능)

> 빌드 시 기존 파이썬 파일을 제거하고 빌드하는 옵션이 있을 거 같긴한데..

~/ros2_ws/build/cython_test/build/lib.linux-x86_64-3.10/cython_test

~/ros2_ws/install/cython_test/lib/python3.10/site-packages/cython_test

/build /install 내부의 위의 두 원본 파일(cython_test.py)을 제거 후 배포

0개의 댓글