ImportError: dynamic module does not define module export function (PyInit__tf2)

一.操作:

roslaunch turtle_tf turtle_tf_demo.launch

二.报错:

File "/opt/ros/kinetic/lib/python2.7/dist-packages/tf2_py/__init__.py", line 38, in
    from ._tf2 import *
ImportError: dynamic module does not define module export function (PyInit__tf2)
[turtle1_tf_broadcaster-3] process has died [pid 6226, exit code 1, cmd /opt/ros/kinetic/lib/turtle_tf/turtle_tf_broadcaster.py __name:=turtle1_tf_broadcaster __log:=/home/joes/.ros/log/63bc18f8-3c4a-11ec-ba4c-14f6d8d77445/turtle1_tf_broadcaster-3.log].
log file: /home/joes/.ros/log/63bc18f8-3c4a-11ec-ba4c-14f6d8d77445/turtle1_tf_broadcaster-3*.log
[turtle2_tf_broadcaster-4] process has died [pid 6228, exit code 1, cmd /opt/ros/kinetic/lib/turtle_tf/turtle_tf_broadcaster.py __name:=turtle2_tf_broadcaster __log:=/home/joes/.ros/log/63bc18f8-3c4a-11ec-ba4c-14f6d8d77445/turtle2_tf_broadcaster-4.log].
log file: /home/joes/.ros/log/63bc18f8-3c4a-11ec-ba4c-14f6d8d77445/turtle2_tf_broadcaster-4*.log
[turtle_pointer-5] process has died [pid 6240, exit code 1, cmd /opt/ros/kinetic/lib/turtle_tf/turtle_tf_listener.py __name:=turtle_pointer __log:=/home/joes/.ros/log/63bc18f8-3c4a-11ec-ba4c-14f6d8d77445/turtle_pointer-5.log].
log file: /home/joes/.ros/log/63bc18f8-3c4a-11ec-ba4c-14f6d8d77445/turtle_pointer-5*.log

三.解决方法

1.tf2是为了Python2写的,不适用于Python3。所以找到报错的几个文件(加深背景的几个文件),找到文件对应路径,执行:

cd /opt/ros/kinetic/lib/turtle_tf

sudo gedit turtle_tf_broadcaster.py

将首行的 #!/usr/bin/env python 改为 #!/usr/bin/env python2

2.同理:

cd /opt/ros/kinetic/lib/turtle_tf

sudo gedit turtle_tf_listener.py

将首行的 #!/usr/bin/env python 改为 #!/usr/bin/env python

重新执行:roslaunch turtle_tf turtle_tf_demo.launch,报错解除.

参考:ImportError: dynamic module does not define module export function (PyInit__tf2)_weixin_13631876322的博客-CSDN博客

你可能感兴趣的:(ROS,自动驾驶,人工智能,机器学习)