用colcon构建我的工作空间,一些OSM文件位于目录中"OSM";在工作区的子包中,在构建空间中找不到。所以当我进入安装空间时,文件不在那里。我不知道如何做到这一点,如果我应该把它放在setup.py.
我试着把它放在setup()的参数中的setup.py文件中:
setup(
name=package_name,
version='0.0.0',
packages=[package_name, submodules, osm],
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')),
('.package_name/sub_package', glob('OSM_folder/*.osm')),
],
.
.
.
) # close setup()
但它没有起作用。
我正在使用ROS2银河。
目录结构:
package_name
┃
┣━━━━setup.py
┣━━━━package.xml
┣━━━━resource/
┣━━━━launch/
┗━━━━package_name
┗━sub_package_name
┗━OSM
┣━__init__.py
┗━some_osm_files.osm
我在构建的工作区中有OSM目录,但它只有init.py文件
我解决了它。我不确定这是否是正确的方法,或者是否有其他更好/合适的方法,但我们开始吧。
在setup.py文件中,我添加了data_files变量中的(os.path.join('lib/python3.8/site-packages/package_name/sub_package/OSM'),glob(package_name+'/sub_package_name/OSM/*.osm')),
。
新行的第一部分os.path.join('lib/python3.8/site-packages/package_name/sub_package_name/OSM')
确定了构建工作区后install文件夹中文件的新位置。
第二部分是glob(package_name+'/sub_package_name/OSM/*.osm')
,它确定了文件在项目工作空间中的原始位置。
结果是,它从第二部分提到的位置获取文件,并将它们放在第一部分提到的地方。
结果块是:
setup(
name=package_name,
version='0.0.0',
packages=[package_name, submodules, osm],
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')),
(os.path.join('lib/python3.8/site-packages/package_name/sub_package_name/OSM'), glob(package_name+'/sub_package_name/OSM/*.osm')),
],
.
.
.
)