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

我正在开发一个依赖NodeJS和Express模块​​的Web应用程序,在这个模块中,我试图从一个快速路线运行一个Python脚本。 我想要做的是将Python脚本存储在/public/scripts/test.py并使用诸如/scripts/test.py的相对URL来引用它,以便Node不需要知道任何关于环境的信息它正在运行。

我试图通过使用python-shell模块和简单地使用Node内置的ChildProcess来执行Python脚本。 在这两种情况下,我遇到了同样的问题 – Python脚本的path似乎被视为绝对的,因此脚本不执行,导致文件未find错误。

我该如何去调用一个相对URL的Python脚本? 我对networking开发相当陌生,如果我只是误解了这个情况,我不会感到惊讶。

编辑:正如jfreind00指出的,process.cwd()可以用来标识当前的工作目录上的脚本可以build立一个URL的顶部。 像魅力一样工作。

将我的意见转换成答案,以便您可以将此问题标记为已解决。

从节点调用程序遵循所有通常所期望的path规则。 如果您在path前面加上/ ,则系统将查找当前目录卷的根目录。 如果您不希望节点了解您的外部目录结构,请为您的python脚本设置位置或path前缀的环境variables,并让节点脚本读取该环境variables。 无论哪种方式,节点必须知道实际的path,它必须在节点当前的工作目录,或者它必须在path中,你必须运行它将search的path。

如果您想查看当前工作目录在您的特定configuration中,那么您可以使用:

 console.log(process.cwd()); 

看看目前的工作目录是什么,你可以看到如何根据你的path。