我正在Node.js中开发一个测验应用程序。 我需要一些python脚本来保持用户日志,所以我想使用键记录器来保持监测用户,同时尝试测验。 下面是python键盘记录器脚本:
from pynput.keyboard import Key, Listener
import logging
log_directory = r"G:/Pythonin Node/Keylogger/key_logger/public/log_files/"
logging.basicConfig(filename = (log_directory+"keylog.txt"), level = logging.DEBUG)
def on_press(key):
logging.info(str(key))
with Listener(on_press = on_press) as listener:
listener.join()
当我在Pycharm中运行脚本时,它工作得很好,但是当我使用python-shell从节点应用程序调用它时,我发现了一个错误:
{
traceback: "Traceback (most recent call last): File "script.py", line 1, in <module> from pynput.keyboard import Key, Listener ModuleNotFoundError: No module named 'pynput' ",
executable: "py",
options: null,
script: "script.py",
args: [
"xyz",
"abc"
],
exitCode: 1
}
这是简单的json响应。
下面是我的节点代码:
app.get('/', callD_alembert);
function callD_alembert(req, res) {
var x="xyz";
var y="abc";
var options = {
args:
[
x,
y
]
}
PythonShell.run('./script.py', options, function (err, data) {
if (err) res.send(err);
res.send(data.toString())
});
}
python shell执行简单的python脚本,其中我不使用任何外部包。但是当我使用“pynput”包并想要导入它时,会出现以下错误:
请帮我解决这个问题。
谢谢
看起来您正在不同的环境中运行python解释器。
尝试将下面的代码添加到您的python脚本中,并从pycharm使用PythonShell运行它:
import sys
print(sys.executable)
如果打印的路径不同,请尝试修改传递给PythonShell的选项,使路径与通过PyCharm运行脚本时的路径匹配:
var options = {
// replace this with the path you got by running the script in pycharm
pythonPath: 'path/to/python',
args:
[
x,
y
]
}