Answer a question

I am developing a quiz application in node.js. I need some python script to keep log of user,so I want to use key logger to keep monitoring the user while attempting the quiz. Here is the python keylogger script:

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()

Script working well when i run it in pycharm.but when I call it from node application using python-shell I found an error:

{
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
}

This is the simple json response.

Here is my node code:

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 executes the simple python script in which I don't use any external package.but when I to use "pynput" package and want to import it.it gives the following error:

enter image description here

Here is also running a python interpreter: enter image description here

please help me to solve this issue.

Thank you

Answers

It looks like you are running the python interpreter in different environments.

Try adding the code below to your python script, and run it from pycharm and using PythonShell:

import sys
print(sys.executable)

If the printed paths are different, try modifying the options you pass to PythonShell, so that the path matches the one you have while running the script via pycharm:

var options = {
  // replace this with the path you got by running the script in pycharm
  pythonPath: 'path/to/python',
  args:
  [
    x,
    y
  ]
}
Logo

开发云社区提供前沿行业资讯和优质的学习知识,同时提供优质稳定、价格优惠的云主机、数据库、网络、云储存等云服务产品

更多推荐