ros运行catkin_make报警:No module named em......
问题描述
在跟着ros教程学习“创建ros消息和ros服务”(http://wiki.ros.org/cn/ROS/Tutorials/CreatingMsgAndSrv)时:添加了msg和srv之后,在终端中执行catkin_make命令报错了,编译失败的原因首先是ModuleNotFoundError: No module named ‘em’:
Traceback (most recent call last):
File "/opt/ros/kinetic/share/gencpp/cmake/../../../lib/gencpp/gen_cpp.py", line 41, in <module>
import genmsg.template_tools
File "/opt/ros/kinetic/lib/python2.7/dist-packages/genmsg/template_tools.py", line 39, in <module>
import em
ModuleNotFoundError: No module named 'em'
beginner_tutorials/CMakeFiles/beginner_tutorials_generate_messages_cpp.dir/build.make:63: recipe for target '/home/skipper/catkin_ws/devel/include/beginner_tutorials/Num.h' failed
make[2]: *** [/home/skipper/catkin_ws/devel/include/beginner_tutorials/Num.h] Error 1
CMakeFiles/Makefile2:1192: recipe for target 'beginner_tutorials/CMakeFiles/beginner_tutorials_generate_messages_cpp.dir/all' failed
make[1]: *** [beginner_tutorials/CMakeFiles/beginner_tutorials_generate_messages_cpp.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
寻找了许多解决方法例如执行命令python -m pip install empy、pip install em,仍然不能直接解决问题。
$ python -m pip install empy
/home/skipper/.local/lib/python2.7/site-packages/pip/_vendor/requests/__init__.py:83: RequestsDependencyWarning: Old version of cryptography ([1, 2, 3]) may cause slowdown.
warnings.warn(warning, RequestsDependencyWarning)
DEPRECATION: Python 2.7 will reach the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 won't be maintained after that date. A future version of pip will drop support for Python 2.7. More details about Python 2 support in pip, can be found at https://pip.pypa.io/en/latest/development/release-process/#python-2-support
Requirement already satisfied: empy in /usr/lib/python2.7/dist-packages (3.3.2)
我的解决方法
运行了python -m pip install empy命令后,发现empy是成功地安装在了/usr/lib/python2.7/dist-packages中,而不是编译时报错的**/opt/ros/kinetic/lib/python2.7/dist-packages**中,因此尝试是否可以将empy.py文件从/usr复制到/ros中去:
sudo cp /usr/lib/python2.7/dist-packages/em.py /opt/ros/kinetic/lib/python2.7/dist-packages/
然后重新打开一个终端,在工作空间中再次执行catkin_make命令,发现编译成功:
skipper@ren9000:~/catkin_ws$ catkin_make
Base path: /home/skipper/catkin_ws
Source space: /home/skipper/catkin_ws/src
Build space: /home/skipper/catkin_ws/build
Devel space: /home/skipper/catkin_ws/devel
Install space: /home/skipper/catkin_ws/install
####
#### Running command: "make cmake_check_build_system" in "/home/skipper/catkin_ws/build"
####
####
#### Running command: "make -j8 -l8" in "/home/skipper/catkin_ws/build"
####
[ 0%] Built target std_msgs_generate_messages_py
[ 0%] Built target std_msgs_generate_messages_nodejs
[ 0%] Built target std_msgs_generate_messages_eus
[ 0%] Built target std_msgs_generate_messages_lisp
[ 0%] Built target std_msgs_generate_messages_cpp
[ 0%] Built target _beginner_tutorials_generate_messages_check_deps_AddTwoInts
[ 0%] Built target _beginner_tutorials_generate_messages_check_deps_Num
[ 53%] Generating C++ code from beginner_tutorials/AddTwoInts.srv
[ 38%] Built target beginner_tutorials_generate_messages_lisp
[ 38%] Generating C++ code from beginner_tutorials/Num.msg
[ 61%] Built target beginner_tutorials_generate_messages_eus
[ 84%] Built target beginner_tutorials_generate_messages_py
[100%] Built target beginner_tutorials_generate_messages_nodejs
[100%] Built target beginner_tutorials_generate_messages_cpp
Scanning dependencies of target beginner_tutorials_generate_messages
[100%] Built target beginner_tutorials_generate_messages
待续
这个只是我的解决方法,至于这样直接复制有没有问题,还不知道——可能只能解决了编译问题,不能解决潜在的其他问题。
参考链接
ros自定义消息的时候报错ImportError: No module named em
https://blog.csdn.net/wawayu_0/article/details/79460043
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)