ROS无法导入第三方库

2024-09-28 17:18:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试在我的ROS环境中使用tkinter,但在设置它时遇到了一些问题。我像这样将它添加到我的packages.xml文件中

<build_depend>roscpp</build_depend>
<build_depend>rospy</build_depend>
<build_depend>std_msgs</build_depend>
<depend>python-tk</depend>
<build_export_depend>roscpp</build_export_depend>
<build_export_depend>rospy</build_export_depend>
<build_export_depend>std_msgs</build_export_depend>
<exec_depend>roscpp</exec_depend>
<exec_depend>rospy</exec_depend>
<exec_depend>std_msgs</exec_depend>

但是当我安装带有rosdep install [my package]的包时,我所在的节点import tkinter仍然不会运行,而是返回ImportError: No module named tkinter。我对ROS比较陌生,以前没有安装过第三方软件包,所以我不确定是否遗漏了什么。提前感谢您的帮助


Tags: 文件build环境tkinterpackagesrosexportxml
1条回答
网友
1楼 · 发布于 2024-09-28 17:18:50

如果是第三方库/包,ros可能不知道如何安装它。如果安装正确,rosdep应该有一个规则缓存,用于安装由社区手动创建的各种软件包。如果一切正常,当您运行rosdep install my_new_pkg时,它应该是All required rosdeps installed successfully,或者是在失败报告时

ERROR: the following packages/stacks could not have their rosdep keys resolved to system dependencies:
my_new_pkg: Cannot locate rosdep definition for [tkinter]

这意味着没有关于如何安装的预定义规则。 (是否应使用pip/pip3?搜索apt?apt安装ros版本tkinter或apt安装tkinter?) 这并不是说它不能完成,但如果不添加规则,它就不能完成。但是,如果您通过其他方式安装,它仍会检查是否已安装。您可以尝试使用rosdep update将缓存更新为全局缓存,但这对tkinter没有帮助

这是rosdep tutorial for system deps。如果您有一堆第三方python包,那么可以使用普通的python env+requirements.txt文件。 (例如,使用pyenv+virtualenv+direnv在requirements.txt上自动调用pip install) 否则,您可以在CMakeLists.txt文件中设置一个钩子,以便在每次编译之前调用requirements.txt文件上的pip install,或者使用其他方法

编辑:记住ROS Melodic&;老年人使用Python2。在python2,according to the docs中,它是import Tkinter。小写导入是python3的一个规范

相关问题 更多 >