在grunt插件中打包python脚本

时间:2014-02-24 07:47:35

标签: python gruntjs

我正在创建一个简单wrapping a python module的grunt插件。我希望不要强迫插件的用户预先安装python模块,所以我用我的插件打包模块。问题是:

如何在尝试将其作为子进程执行时找到python文件的路径

执行Grunt时的当前工作目录是使用插件的程序的顶级目录,而不是插件的目录。因此,我不知道如何在插件中引用python文件。

1 个答案:

答案 0 :(得分:1)

这个问题主要涉及找到执行节点模块的位置。通过查找本地节点变量__dirnamemore 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() { ... } );