python - 使用相对 URL 从 NodeJS/Express 实例执行 Python 脚本

标签 python node.js express

我正在开发一个依赖 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/

相关文章:

Python 舍入不一致

python - 以 root 身份运行时 Chromium webdriver 错误

python - 如何为卡尔曼滤波器定义状态转移矩阵?

javascript - 将过滤器应用于列表并显示数据

javascript - Angular.js 和 Node.js - 通过 Controller 将输入变量传递到 server.js

node.js - 通过 WebSocket 在远程自治 Node.js 应用程序之间进行全双工消息传递?

python - 如何组合线程?

node.js - 尝试编辑用户操作的特定嵌入字段

css - express css 仅显示在索引页面上

javascript - 无法实例化 Mongoose 模式: "Object is not a function"