Linux下Python虚拟环境安装keyboard库遇权限错误求助
问题描述
我在Linux系统的Python虚拟环境里用Spyder开发,为实现键盘交互执行了:
pip install keyboard
但运行代码时出现错误:
ImportError: You must be root to use this library on linux.
试过conda install keyboard、sudo pip install keyboard,还把脚本设为可执行(chmod +x),都没解决问题。
解决方案
用sudo调用虚拟环境的Python运行脚本
不用sudo装库,先在虚拟环境正常装好keyboard后,用sudo直接调用虚拟环境里的Python执行脚本。比如你的虚拟环境路径是~/my_venv,就执行:sudo ~/my_venv/bin/python your_script.py这样既用到虚拟环境的依赖,又获取了运行所需的root权限。
给虚拟环境的Python添加特定权限(无需全程root)
keyboard库需要cap_net_admin权限来监听键盘,给虚拟环境的Python二进制文件添加这个权限后,后续运行脚本就不用sudo了:sudo setcap cap_net_admin+ep ~/my_venv/bin/python记得把
~/my_venv/bin/python替换成你自己虚拟环境的Python实际路径。改用无需root权限的替代库
如果不想折腾权限,可以换成pynput库,它不需要root就能实现键盘监听:pip install pynput简单示例代码:
from pynput.keyboard import Listener, Key def on_press(key): print(f"按下按键: {key}") def on_release(key): print(f"松开按键: {key}") if key == Key.esc: return False # 按下esc停止监听 with Listener(on_press=on_press, on_release=on_release) as listener: listener.join()
内容的提问来源于stack exchange,提问作者Mass17
相关产品推荐
相关产品推荐

