我有一个带有多个子包的ROS2 (rclpy)包,它们一起工作。为了隐藏源代码,只留下可执行文件来完成工作,我想对包进行cythonize处理。你知道我怎么能用软件包的setup.py和启动文件来做到这一点吗?
发布于 2022-05-31 11:01:53
因此,我会回答我自己的问题,以防有人面临同样的问题。对于用python编写ros2包,最好的方法是分别将所需的cython组件添加到每个包的setup.py中。我已经标记了cython部分(用<--)以获得更好的搁浅。
请注意,在使用colcon构建包后,python源代码的副本将存储在colcon生成的安装目录下。您可以轻松地手动删除它们,并且包应该与生成的c++和共享对象文件一起运行。
from glob import glob
from setuptools import setup
from Cython.Build import cythonize <--
import os
package_name = 'your_package_name_here'
files = package_name + "/*.py"
setup(
ext_modules=cythonize(files,compiler_directives={'language_level' : "3"},force=True,quiet=True), <--
name=package_name,
version='0.0.0',
packages=[package_name],
data_files=[
('share/ament_index/resource_index/packages',
['resource/' + package_name]),
('share/' + package_name, ['package.xml']),
(os.path.join('share', package_name), glob('launch/*.launch.py'))
],
install_requires=['setuptools', "wheel", "Cython"], <--
zip_safe=True,
maintainer='NAME',
maintainer_email='EMAIL',
description='TODO: Package description',
license='TODO: License declaration',
tests_require=['pytest'],
entry_points={
'console_scripts': [
'SOME CODE HERE',
],
},
)https://stackoverflow.com/questions/72168194
复制相似问题