python脚本中的熊猫可以与nodejs一起使用吗

时间:2018-09-19 19:23:37

标签: node.js python-3.x pandas

我试图通过NodeJS调用python脚本,它将与python'hello world'脚本一起使用,但是当该脚本使用熊猫时,我无法执行该python脚本。

numpy == 1.15.1 熊猫== 0.23.4

nodeJS

render

python:

router.get('/', (req, res) => {
  const filePath = 'python/testing2.py' 
  const spawn = require("child_process").spawn;
  const pythonProcess = spawn('python3',[filePath, '-l']); 

  util.log('readingin')
  pythonProcess.stdout.on('data', (data) => { 
    const textChunk = data.toString('utf8');// buffer to string
    util.log(textChunk);
    res.json({'working': true, 'data': textChunk})
  });
});

如果我自己运行python脚本:

import sys 
from pandas import read_csv
from pandas import datetime    

def parser(x):
    return datetime.strptime('190'+x, '%Y-%m')    

print("Output from Python") 
series = read_csv('shampoo-sales.csv', header=0, parse_dates=[0], index_col=0, squeeze=True, date_parser=parser)
print (series)
sys.stdout.flush()

2 个答案:

答案 0 :(得分:1)

始终检查从其他进程运行的命令是否使用了期望的Python相同可执行文件。常见的方法是

which python3

where python3

从您的外壳,或

import sys
print(sys.executable)

在您的Python脚本中。

答案 1 :(得分:0)

就我而言,我使用的是PythonShell run方法,并使用了python-shell npm软件包:

您将需要为Python Shell提供将pythonPath指向virtualenv中路径的选项:

  var options = {
    mode: 'text',
    pythonPath: '/Users/WC/anaconda/envs/testtoday/bin/python',
    pythonOptions: ['-u'], // get print results in real-time
    scriptPath: '/Volumes/Transcend/NodeJSTest/PythonNodeJS',
    args:
    [
      req.query.funds, // starting funds
      req.query.size, // (initial) wager size
      req.query.count, // wager count - number of wagers per sim
      req.query.sims // number of simulations
    ]
  }

  ps.PythonShell.run('./d_alembert.py', options, function (err, data) {
    if (err) res.send(err);
    res.send(data.toString());
  });

要找到virtualenv的路径,请激活它:

source activate testtoday

然后输入:

which python

您将在virtualenv中拥有的所有导入都可以在脚本中使用。