我正在创建一个简单wrapping a python module的grunt插件。我希望不要强迫插件的用户预先安装python模块,所以我用我的插件打包模块。问题是:
如何在尝试将其作为子进程执行时找到python文件的路径?
执行Grunt时的当前工作目录是使用插件的程序的顶级目录,而不是插件的目录。因此,我不知道如何在插件中引用python文件。
答案 0 :(得分:1)
这个问题主要涉及找到执行节点模块的位置。通过查找本地节点变量__dirname
(more info)可以找到这一点。一旦找到该位置,另一个基本位就是更改PYTHONPATH以包含脚本位置。这是我需要的代码
var cp = require('child_process')
, path = require('path')
, command = 'python -c \'import mypackage; mypackage.doSomething();\''
, execOptions = {}
, rootDirectoryOfModule = path.join(__dirname, "..");
process.env['PYTHONPATH'] = rootDirectoryOfModule;
var childProcess = cp.exec(command, execOptions, function callback() { ... } );