导入 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'
我正在使用 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'