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

ROS Melodic环境Python3导入tf2_ros报错:PyInit__tf2导出函数未定义

解决ROS Melodic中Python3导入tf2_ros的问题

问题原因

ROS Melodic官方仅支持Python2,你安装的tf2_py是基于Python2编译的C扩展模块。Python3加载模块时要求导出函数以PyInit_开头,而Python2编译的模块使用的是init_前缀,两者不兼容,因此触发导入错误。

可行解决方案:从源码编译tf2相关包适配Python3

  • 新建并进入Python3专属的ROS工作空间:
mkdir -p ~/py3_ros_ws/src
cd ~/py3_ros_ws/src
  • 获取tf2核心源码包:从ROS官方仓库克隆geometry2仓库,切换到适配Melodic的melodic-devel分支。
  • 配置编译环境为Python3:
    在工作空间根目录执行以下命令,指定Python3作为编译依赖(根据你的实际Python3版本调整路径,比如Python3.8对应python3.8、python3.8m):
cd ~/py3_ros_ws
echo "export ROS_PYTHON_VERSION=3" >> ~/.bashrc
source ~/.bashrc
catkin_make -DPYTHON_EXECUTABLE=/usr/bin/python3 -DPYTHON_INCLUDE_DIR=/usr/include/python3.6m -DPYTHON_LIBRARY=/usr/lib/x86_64-linux-gnu/libpython3.6m.so
  • 激活工作空间:
source ~/py3_ros_ws/devel/setup.bash
  • 验证:打开Python3终端,执行import tf2_ros,无报错则说明适配成功。

简易替代方案(功能受限)

若不想编译源码,可尝试使用tf2_ros中无需C扩展的纯Python接口,但仅能满足基础坐标变换需求,复杂功能仍需依赖源码编译方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 10:22:11