我刚刚开始使用 Node-RED 并尝试运行 Python 脚本,但收到错误“没有这样的文件或目录”。 Node-Red 正在我的 Pi4 上的 docker 中运行。
python: can't open file '/home/pi/docker/nodered/data/python/bins.py': [Errno 2] No such file or directory
在红色节点中,我使用注入节点通过 Python 命令运行 exec,然后输出到调试节点。
我可以使用相同的命令从命令行运行脚本,因此路径是正确的。这是输出:
pi@raspberrypi4:/ $ python /home/pi/docker/nodered/data/python/bins.py
I am bloody here: /home/pi/docker/nodered/data/python/bins.py
所以路径是正确的。我做错了什么导致 Node Red 无法看到脚本?我读过几篇文章,说要使用完整路径。我唯一能想到的另一件事是 docker 看不到自身外部,因此需要相对路径,但我也尝试过这个。
此刻感觉有点昏暗!
非常感谢,
路径不正确,因为容器内不存在。
容器的目的是将应用程序与主机隔离(因此它使用一组已知的依赖库和设置运行)。
如果您想运行 python 文件,您需要将其安装到容器中。例如
docker run -d -p 1880:1880 -v /home/pi/docker/nodered/data/python/bins.py:/data/bins.py nodered/node-red
然后您可以使用路径
/data/bins.py
指向 exec 节点中的文件。
如果您已经将
/home/pi/docker/nodered/data
安装到 /data
上的容器中,则在 exec 节点中将使用相同的路径,而不需要额外的 -v /home/pi/docker/nodered/data/python/bins.py:/data/bins.py
到命令行。
重要的是要了解容器内部的路径,而不是主机上的路径。