在 Node-RED 中运行 Python 脚本会导致 [Errno 2] 没有这样的文件或目录

问题描述 投票:0回答:1

我刚刚开始使用 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 node-red
1个回答
0
投票

路径不正确,因为容器内不存在。

容器的目的是将应用程序与主机隔离(因此它使用一组已知的依赖库和设置运行)。

如果您想运行 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
到命令行。

重要的是要了解容器内部的路径,而不是主机上的路径。

© www.soinside.com 2019 - 2024. All rights reserved.