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

Gazebo仿真运行失败:已安装netifaces模块仍提示未找到

解决ROS Kinetic中roslaunch报错ModuleNotFoundError: No module named 'netifaces'

你遇到的这个问题在ROS Kinetic环境里挺常见的,核心原因是ROS Kinetic绑定Python 2.7运行,但你的netifaces模块要么没正确安装到Python 2.7的路径中,要么ROS的Python环境变量没正确指向该模块所在位置。结合你的描述(终端能导入但roslaunch不行),可以按以下步骤排查解决:

先明确问题根源

首先确认ROS调用的Python版本和模块路径:

  • 运行以下命令,查看Python 2.7能否正常导入netifaces:
    python2.7 -c "import netifaces; print('Success! Module path:', netifaces.__file__)"
    
    如果输出成功,说明模块已安装,但ROS可能没找到这个路径;如果报错,说明你之前的安装没覆盖到Python 2.7。

针对性解决方案

方案1:重新安装Python 2.7版本的netifaces

有时候apt install python-netifaces可能因为系统缓存或依赖问题没生效,换用pip2直接安装更可靠:

sudo pip2 install netifaces

安装完成后再运行上面的Python 2.7测试命令,确认模块存在。

方案2:检查并修复ROS的PYTHONPATH环境变量

ROS通过PYTHONPATH查找Python模块,可能这个变量没包含netifaces所在的路径:

  1. 先查看当前PYTHONPATH:
    echo $PYTHONPATH
    
  2. 如果输出里没有/usr/lib/python2.7/dist-packages或/home/your_username/.local/lib/python2.7/site-packages(根据之前测试的模块路径),手动添加:
    export PYTHONPATH=$PYTHONPATH:/usr/lib/python2.7/dist-packages
    
  3. 再次尝试运行你的roslaunch命令:
    roslaunch usv_sim airboat_scenario1.launch parse:=true
    
  4. 如果生效,把这个环境变量添加到~/.bashrc里,避免每次重启终端都要设置:
    echo 'export PYTHONPATH=$PYTHONPATH:/usr/lib/python2.7/dist-packages' >> ~/.bashrc
    source ~/.bashrc
    

方案3:排查虚拟环境干扰

如果你平时用Python虚拟环境,可能运行roslaunch时不小心激活了Python 3的虚拟环境,导致ROS找不到Python 2的模块:

  • 先运行deactivate退出所有虚拟环境,再重新运行roslaunch命令测试。

方案4:验证rosgraph模块的依赖

报错是从rosgraph/network.py里触发的,可以直接检查这个文件的导入逻辑:

cd /opt/ros/kinetic/lib/python2.7/dist-packages/rosgraph
cat network.py | grep -n "import netifaces"

确认第217行确实有这个导入,然后运行:

python2.7 network.py

如果报错同样找不到模块,说明问题确实出在Python 2的模块安装上,回到方案1重新安装。


附你提供的完整报错信息:

rameezs:~/catkin_ws$ roslaunch usv_sim airboat_scenario1.launch parse:=true
... logging to /home/rameezs/.ros/log/5cbbdbb0-c28f-11e9-bea5-88b111c4685a/roslaunch-thinkram-16846.log
Checking log directory for disk usage. This may take awhile. Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.
Traceback (most recent call last):
File "/opt/ros/kinetic/lib/python2.7/dist-packages/roslaunch/init.py", line 306, in main
p.start()
File "/opt/ros/kinetic/lib/python2.7/dist-packages/roslaunch/parent.py", line 268, in start
self._start_infrastructure()
File "/opt/ros/kinetic/lib/python2.7/dist-packages/roslaunch/parent.py", line 217, in _start_infrastructure
self._load_config()
File "/opt/ros/kinetic/lib/python2.7/dist-packages/roslaunch/parent.py", line 132, in _load_config
roslaunch_strs=self.roslaunch_strs, verbose=self.verbose)
File "/opt/ros/kinetic/lib/python2.7/dist-packages/roslaunch/config.py", line 471, in load_config_default
config.assign_machines()
File "/opt/ros/kinetic/lib/python2.7/dist-packages/roslaunch/config.py", line 222, in assign_machines
if [m for m in machine_unify_dict.values() if not is_machine_local(m)]:
File "/opt/ros/kinetic/lib/python2.7/dist-packages/roslaunch/config.py", line 222, in
if [m for m in machine_unify_dict.values() if not is_machine_local(m)]:
File "/opt/ros/kinetic/lib/python2.7/dist-packages/roslaunch/core.py", line 97, in is_machine_local
local_addresses = ['localhost'] + rosgraph.network.get_local_addresses()
File "/opt/ros/kinetic/lib/python2.7/dist-packages/rosgraph/network.py", line 217, in get_local_addresses
import netifaces
ModuleNotFoundError: No module named 'netifaces'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:01:45