You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ROS2 Foxy中能否为Python节点设置独立目录?

ROS2 Foxy中为Python节点设置独立目录的解决方案

可以在ROS2 Foxy中为Python节点设置独立目录,你遇到的ModuleNotFoundError是因为nodes目录不在Python包的默认导入路径里——ROS2默认只识别与包名同名的顶层子目录(即python_pkg/python_pkg/)下的模块。下面提供两种可行的解决方法:

方法一:调整目录结构(推荐)

把nodes目录移到与包名同名的子目录下,调整后的目录结构如下:

python_pkg/
│
├─ python_pkg/
│  ├─ __init__.py
│  ├─ my_module.py
│  ├─ hello_world.py
│  └─ nodes/
│     ├─ __init__.py
│     └─ simple_node.py
|
└─ ...

然后修改setup.py中的entry_points,将节点路径改为包内路径:

setup(
    name="python_pkg",
    ...
    entry_points={
        'console_scripts': [
                'hello_world = python_pkg.hello_world:main',
                'simple_node = python_pkg.nodes.simple_node:main',
        ],
},
)

方法二:修改setup.py配置(无需调整目录)

如果不想改动现有目录结构,需要在setup.py中明确指定要包含的包以及包的查找路径:

setup(
    name="python_pkg",
    ...
    packages=['python_pkg', 'nodes'],  # 包含原包和nodes目录作为子包
    package_dir={'': '.'},  # 告诉setuptools在当前根目录下查找这些包
    entry_points={
        'console_scripts': [
                'hello_world = python_pkg.hello_world:main',
                'simple_node = nodes.simple_node:main',
        ],
},
)

后续操作

无论使用哪种方法,修改完成后都需要重新编译包并source工作空间:

colcon build --packages-select python_pkg
source install/setup.bash

之后再执行ros2 run python_pkg simple_node就能正常运行节点了。

内容的提问来源于stack exchange,提问作者Androvich

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 13:21:16