2014-02-24 32 views
1

我正在創建一個只是wrapping a python module的grunt插件。我希望不要強制插件的用戶預先安裝python模塊,所以我用我的插件打包模塊。問題是:在grunt插件中打包python腳本

如何在試圖將其作爲子進程執行時找到python文件的路徑

執行Grunt時的當前工作目錄是使用插件的程序的頂層目錄,而不是插件的目錄。因此,我不知道如何引用插件中的python文件。

回答

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() { ... });