You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用pynput编写键盘记录器遇ModuleNotFoundError问题求助

问题分析与解决方法

嘿,刚接触Python遇到这种问题很正常,我来帮你拆解清楚:

错误原因

你看报错信息第一行写着File "C:\Users\lenovo\Documents\pynput.py", line 1——你的脚本文件名是pynput.py,和要导入的第三方库重名了!

Python导入模块时会按固定顺序查找:先找当前脚本所在目录的文件/包,再去系统Python库目录找。所以当你执行from pynput.keyboard import Key时,Python误以为要导入的是你自己写的pynput.py,但这个文件根本不是包含keyboard子模块的包,自然就抛出错误了。

解决步骤

  • 第一步:重命名你的脚本文件
    把脚本从pynput.py改成不冲突的名字,比如my_key_logger.py,绝对不能和任何第三方库同名。
  • 第二步:清理残留编译文件
    检查脚本目录里有没有pynput.pyc或者__pycache__文件夹(这是Python自动生成的编译缓存),如果有直接删掉,不然Python还是会优先加载缓存里的错误文件。
  • 第三步:修复路径转义问题(额外小提示)
    你的日志文件路径"C:\Users\lenovo\Documents\log.txt"里的反斜杠\是Python的转义字符,可能导致路径解析失败,建议改成两种写法之一:
    • 双反斜杠:"C:\\Users\\lenovo\\Documents\\log.txt"
    • 原始字符串:r"C:\Users\lenovo\Documents\log.txt"

修正后的示例代码

from pynput.keyboard import Key, Listener
import logging

# 用原始字符串避免路径转义问题
file = r"C:\Users\lenovo\Documents\log.txt"
logging.basicConfig(filename=file, level=logging.DEBUG, format='%(asctime)s: %(message)s')

def on_press(key):
    logging.info(key)

with Listener(on_press=on_press) as listener:
    listener.join()

做完这些步骤后,再运行脚本应该就能正常工作啦!

内容的提问来源于stack exchange,提问作者ahmed mellouk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:34:29