我正在开发一个依赖 NodeJS 和 Express 模块的 Web 应用程序,在其中我尝试从 Express 路径运行 Python 脚本。我想做的是将 Python 脚本存储在 /public/scripts/test.py
中,并使用相对 URL(例如 /scripts/test.py
)引用它这样 Node 就不需要知道它运行的环境的任何信息。
我尝试使用 python-shell module 来执行 Python 脚本。并通过简单地使用 Node 的内置 ChildProcess 。在这两种情况下,我都遇到了同样的问题 - Python 脚本的路径似乎被视为绝对路径,因此脚本未执行,导致文件未找到错误。
如何使用相对 URL 调用 Python 脚本?我对网络开发相当陌生,所以如果我只是误解了这种情况,我不会感到惊讶。
编辑: 正如 jfreind00 所指出的,process.cwd() 可用于识别当前工作目录,在该目录上可以构建脚本的 URL。效果非常好。
最佳答案
将我的评论转化为答案,以便您可以将此问题标记为已解决。
从 Node 调用程序遵循所有通常预期的路径规则。如果在路径前面加上 /
,则系统会在当前目录卷的根目录中查找。如果您不希望 Node 了解外部目录结构,请为 Python 脚本的位置或路径前缀设置一个环境变量,并让 Node 脚本读取该环境变量。无论哪种方式, Node 必须知道实际路径,它必须位于 Node 当前工作目录中,或者必须位于路径中,并且您必须使用将搜索路径的东西来运行它。
如果您想查看特定配置中的当前工作目录,那么您可以使用:
console.log(process.cwd());
查看当前工作目录是什么,以便您可以了解如何基于该目录构建路径。
关于python - 使用相对 URL 从 NodeJS/Express 实例执行 Python 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27279305/