使用colcon构建我的工作区时,在工作区中的sub_package中的目录" OSM“中找到的一些OSM文件在构建的空间中找不到。所以当我进入安装空间时,文件就不存在了。如果我把它放到setup.py中,我不知道该如何做。
我尝试将它放在setup.py文件中的setup()的参数中:
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文件。
发布于 2022-06-10 14:14:43
我解决了。我不知道这是否是正确的做法,或是否有另一种更好/适当的方式,但我们开始。
在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'),在构建工作区后确定安装文件夹中文件的新位置。
第二部分,即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')),
],
.
.
.
)https://stackoverflow.com/questions/72564377
复制相似问题