我正在node.js中开发测验应用程序。我需要一些python脚本来保留用户日志,因此我想在尝试测验时使用按键记录器来持续监视用户。这是python keylogger脚本:
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
]
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句