ROS新手求助:rosrun无法找到Python可执行文件talker.py
解决ROS Noetic中rosrun找不到Python可执行文件的问题
针对你遇到的couldn't find executable named错误,结合ROS Noetic(Python3)的配置要求,按以下步骤修改配置:
1. 检查Python脚本的Shebang行
确保talker.py的第一行是针对Python3的声明,避免系统调用Python2:
#!/usr/bin/env python3
你已设置权限(chmod +x),这一步确认即可。
2. 修改CMakeLists.txt配置
针对Python脚本,需要在ros_test包的CMakeLists.txt中添加安装规则,让catkin将脚本部署到rosrun能识别的路径:
关键配置片段:
# 1. 确保已找到rospy等依赖 find_package(catkin REQUIRED COMPONENTS rospy std_msgs # 若你的talker用到该消息包则保留,否则可移除 ) # 2. 声明catkin包依赖 catkin_package( CATKIN_DEPENDS rospy std_msgs ) # 3. 安装Python可执行文件到指定目录 catkin_install_python(PROGRAMS src/talker.py DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION} )
PROGRAMS后的路径要和talker.py实际位置完全对应(你这里是ros_test/src/talker.py,所以写src/talker.py)。- 若后续将脚本移到ROS推荐的
scripts目录,则改成scripts/talker.py。
3. 重新编译并更新环境
回到ROS工作空间根目录,执行以下命令:
# 编译包 catkin_make # 若安装了catkin_tools,也可执行:catkin build ros_test # 更新环境变量 source devel/setup.bash
4. 验证配置是否生效
- 执行
rospack find ros_test,确认能输出包的正确路径。 - 查看
devel/lib/ros_test/目录,确认talker.py已被安装到此处。 - 再次尝试运行:
rosrun ros_test talker.py
额外排查点
- 确认
package.xml中已添加Python依赖:<exec_depend>python3-rospy</exec_depend> - 检查
ROS_PACKAGE_PATH是否包含你的工作空间:
输出应包含echo $ROS_PACKAGE_PATH你的工作空间路径/src。
内容的提问来源于stack exchange,提问作者zhg
相关产品推荐
相关产品推荐

