Node-RED使用Daemon node运行Python脚本提示Command not running如何解决
问题原因及解决方案
command not running报错的核心原因是Daemon节点未能成功启动你指定的Python进程,可按照以下优先级排查:
- 执行命令配置错误
Daemon节点的Command字段不能仅填写脚本路径/example/main.py,需要写入完整的可执行命令,示例如下:
需注意两点:1. 优先使用Python解释器的绝对路径,避免Node-RED运行环境的PATH变量缺失Python路径;2. 如果你打算直接把脚本作为命令执行,需要先给脚本添加可执行权限/usr/bin/python3 /example/main.pychmod +x /example/main.py,同时在脚本首行添加shebang声明#!/usr/bin/env python3。 - 进程启动触发逻辑不匹配
如果你将Daemon节点的启动模式设为了Manual,那么按钮发送的消息payload必须为start才会触发进程启动,默认按钮发送的时间戳无法触发启动操作,自然会提示命令未运行。如果需要进程随Node-RED启动自动运行,可将启动模式改为Automatic。 - 权限问题
需要确认Node-RED运行身份的用户拥有/example/main.py的读取权限,以及对应Python解释器的执行权限。 - 输入输出配置错误
因为你的脚本需要从stdin获取输入,需要先勾选Daemon节点的Send input to stdin选项,同时注意进程的启动和输入是两个操作:第一次符合要求的触发会启动进程,后续发送的消息才会被传入stdin供脚本读取,仅点击一次按钮无法同时完成启动+传参两个操作。
快速排查手段
- 切换到Node-RED运行的用户身份,手动执行你在Daemon节点填写的完整命令,确认脚本可以正常运行,排除依赖缺失、路径错误等问题
- 将Daemon节点的stderr输出也连接到debug节点,可以直接看到进程启动时的具体报错信息,大幅提升排查效率
内容的提问来源于stack exchange,提问作者Ivan Zhong
相关产品推荐
相关产品推荐

