导入 pandas 模块使我的脚本停止工作

Importing pandas module stops my script from working

我正在使用 child_process 模型将数据发送到 python 脚本,我在其中使用 pandas 执行一些计算,然后将其发送回 node.js脚本:index.js。问题是,当我将 pandas 模块导入 python 脚本时,它会阻止脚本将数据返回到我的 index.js 脚本(我不知道为什么)。但是,如果我只是不导入 pandas 模块,我会从 python 脚本中获取返回的数据。

这就是我将数据从 index.js 发送到 python 脚本的方式:

const spawn = require('child_process').spawn
let result = ''

const pythonProcess = spawn('python',['./rl-commands/t1.py', a, b]); #a, b are arguments that I send through. In this case they are just som integers (2 and 2) 

然后我像这样处理 python 脚本中的数据(请记住,我实际上并没有在这里使用 pandas,因为我只是想让两个脚本之间的连接起作用首先,但 pandas 仍然是必要的):

import sys
import json
import random
import numpy as np
import pandas as pd

a = sys.argv[1]
b = sys.argv[2]

print(int(a) + int(b))
sys.stdout.flush()

最后,我将在 python 中处理的代码检索到我的 index.js 脚本中:

pythonProcess.stdout.on('data', (data) => {
    result += data.toString()
});
pythonProcess.on('close', function (code) {
    console.log("RES: ", result);
});

!!!如前所述,这是行不通的。但是,如果我注释掉 python 脚本中的 pandas 导入,它会起作用:

import sys
import json
import random
import numpy as np
#import pandas as pd

a = sys.argv[1]
b = sys.argv[2]

print(int(a) + int(b))
sys.stdout.flush()

我不明白删除 import pandas as pd 如何使脚本 运行?

因为它无法 运行 几乎肯定有一些数据写入 stderr 包含错误消息所以我强烈建议你在你的 javascript 代码中做这样的事情:

pythonProcess.stderr.on('data', (data) => {
    console.error(data)
});

然后它将 python 脚本中的错误输出到您的 javascript 终端。

一旦你知道出了什么问题(几乎可以肯定 pandas 模块没有安装在这个特定的实例中)很可能 python 命令没有引用版本的 python 是您所期望的。尝试 运行宁:

spawn('python',["--version"])

或类似以确认它是正确的版本,您可能需要使用 'python3''python3.6' 等作为可执行文件来指定要使用的特定版本,而不仅仅是 'python'