Macos IOError:[Errno 1]不允许操作:'/dev/uinput';
我似乎有一些问题让python读取关键事件,我写了这段代码 当我有空间的时候录音,当我释放它时停止Macos IOError:[Errno 1]不允许操作:'/dev/uinput';,macos,python-2.7,keyboard,keyevent,pyaudio,Macos,Python 2.7,Keyboard,Keyevent,Pyaudio,我似乎有一些问题让python读取关键事件,我写了这段代码 当我有空间的时候录音,当我释放它时停止 import pyaudio import wave import keyboard CHUNK = 1024 FORMAT = pyaudio.paInt16 CHANNELS = 2 RATE = 44100 RECORD_SECONDS = 5 WAVE_OUTPUT_FILENAME = "output.wav" p = pyaudio.PyAudio() stream = p.op
import pyaudio
import wave
import keyboard
CHUNK = 1024
FORMAT = pyaudio.paInt16
CHANNELS = 2
RATE = 44100
RECORD_SECONDS = 5
WAVE_OUTPUT_FILENAME = "output.wav"
p = pyaudio.PyAudio()
stream = p.open(format=FORMAT,
channels=CHANNELS,
rate=RATE,
input=True,
frames_per_buffer=CHUNK)
print("* recording")
frames = []
while keyboard.is_pressed('space'):
data = stream.read(CHUNK)
frames.append(data)
print("* done recording")
stream.stop_stream()
stream.close()
p.terminate()
wf = wave.open(WAVE_OUTPUT_FILENAME, 'wb')
wf.setnchannels(CHANNELS)
wf.setsampwidth(p.get_sample_size(FORMAT))
wf.setframerate(RATE)
wf.writeframes(b''.join(frames))
wf.close()
但是当运行这个代码时,我得到了这个错误消息
python sound_record.py
* recording
Traceback (most recent call last):
File "sound_record.py", line 24, in <module>
while keyboard.is_pressed('space'):
File "/usr/local/lib/python2.7/site-packages/keyboard/__init__.py", line 162, in is_pressed
_listener.start_if_necessary()
File "/usr/local/lib/python2.7/site-packages/keyboard/_generic.py", line 36, in start_if_necessary
self.init()
File "/usr/local/lib/python2.7/site-packages/keyboard/__init__.py", line 112, in init
_os_keyboard.init()
File "/usr/local/lib/python2.7/site-packages/keyboard/_nixkeyboard.py", line 110, in init
build_device()
File "/usr/local/lib/python2.7/site-packages/keyboard/_nixkeyboard.py", line 106, in build_device
ensure_root()
File "/usr/local/lib/python2.7/site-packages/keyboard/_nixcommon.py", line 163, in ensure_root
raise ImportError('You must be root to use this library on linux.')
ImportError: You must be root to use this library on linux.
python sound\u record.py
*录音
回溯(最近一次呼叫最后一次):
文件“sound_record.py”,第24行,在
按下键盘时('空格'):
文件“/usr/local/lib/python2.7/site packages/keyboard/_init__.py”,第162行,按
_listener.start\u如果需要()
文件“/usr/local/lib/python2.7/site packages/keyboard/_generic.py”,第36行,如有必要,在start_中
self.init()
文件“/usr/local/lib/python2.7/site packages/keyboard/_init__.py”,第112行,在init中
_os_keyboard.init()
文件“/usr/local/lib/python2.7/site packages/keyboard/_nixkeyboard.py”,第110行,在init中
构建设备()
文件“/usr/local/lib/python2.7/site packages/keyboard/\u nixkeyboard.py”,第106行,内置设备
确保_root()
文件“/usr/local/lib/python2.7/site packages/keyboard/\u nixcommon.py”,第163行,在根目录中
raise ImportError('您必须是root才能在linux上使用此库。“)
ImportError:您必须是root才能在linux上使用此库。
当我使用sudo时:
sudo !!
sudo python sound_record.py
Password:
* recording
Traceback (most recent call last):
File "sound_record.py", line 24, in <module>
while keyboard.is_pressed('space'):
File "/usr/local/lib/python2.7/site-packages/keyboard/__init__.py", line 162, in is_pressed
_listener.start_if_necessary()
File "/usr/local/lib/python2.7/site-packages/keyboard/_generic.py", line 36, in start_if_necessary
self.init()
File "/usr/local/lib/python2.7/site-packages/keyboard/__init__.py", line 112, in init
_os_keyboard.init()
File "/usr/local/lib/python2.7/site-packages/keyboard/_nixkeyboard.py", line 110, in init
build_device()
File "/usr/local/lib/python2.7/site-packages/keyboard/_nixkeyboard.py", line 107, in build_device
device = aggregate_devices('kbd')
File "/usr/local/lib/python2.7/site-packages/keyboard/_nixcommon.py", line 141, in aggregate_devices
uinput = make_uinput()
File "/usr/local/lib/python2.7/site-packages/keyboard/_nixcommon.py", line 27, in make_uinput
uinput = open("/dev/uinput", 'wb')
IOError: [Errno 1] Operation not permitted: '/dev/uinput'
sudo!!
sudo python sound_record.py
密码:
*录音
回溯(最近一次呼叫最后一次):
文件“sound_record.py”,第24行,在
按下键盘时('空格'):
文件“/usr/local/lib/python2.7/site packages/keyboard/_init__.py”,第162行,按
_listener.start\u如果需要()
文件“/usr/local/lib/python2.7/site packages/keyboard/_generic.py”,第36行,如有必要,在start_中
self.init()
文件“/usr/local/lib/python2.7/site packages/keyboard/_init__.py”,第112行,在init中
_os_keyboard.init()
文件“/usr/local/lib/python2.7/site packages/keyboard/_nixkeyboard.py”,第110行,在init中
构建设备()
文件“/usr/local/lib/python2.7/site packages/keyboard/\u nixkeyboard.py”,第107行,内置设备
设备=聚合设备(kbd)
文件“/usr/local/lib/python2.7/site-packages/keyboard/_-nixcommon.py”,第141行,在聚合设备中
uinput=make_uinput()
文件“/usr/local/lib/python2.7/site packages/keyboard/_nixcommon.py”,第27行,make_uinput
uinput=open(“/dev/uinput”,“wb”)
IOError:[Errno 1]不允许操作:'/dev/uinput'
那么为什么我会收到这个错误消息呢 您似乎正在使用Python软件包
键盘
,它是:
在Windows和Linux上钩住并模拟键盘事件
如果你想在MacOS上处理键盘事件,你需要找到一个可以这样做的软件包