连接到 USB 时出现“[Errno 13] 访问被拒绝”
"[Errno 13] Access denied" when connecting to USB
所以我一直在关注 these 文档,以便我可以通过 python 在我的热敏打印机上打印。
我 运行宁 Ubuntu 并且安装了 pyusb 模块。
打印机是容大RP58,通过lsusb命令(0fe6:811e)查到idVendor和idProduct。
就像在说明中一样,我输入:
from escpos.printer import Usb
p = Usb(0x0fe6, 0x811e)
但出现错误
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/testerdell/.local/lib/python2.7/site-packages/escpos/printer.py", line 51, in __init__
self.open()
File "/home/testerdell/.local/lib/python2.7/site-packages/escpos/printer.py", line 62, in open
check_driver = self.device.is_kernel_driver_active(0)
File "/home/testerdell/.local/lib/python2.7/site-packages/usb/core.py", line 1061, in is_kernel_driver_active
self._ctx.managed_open()
File "/home/testerdell/.local/lib/python2.7/site-packages/usb/core.py", line 102, in wrapper
return f(self, *args, **kwargs)
File "/home/testerdell/.local/lib/python2.7/site-packages/usb/core.py", line 120, in managed_open
self.handle = self.backend.open_device(self.dev)
File "/home/testerdell/.local/lib/python2.7/site-packages/usb/backend/libusb1.py", line 786, in open_device
return _DeviceHandle(dev)
File "/home/testerdell/.local/lib/python2.7/site-packages/usb/backend/libusb1.py", line 643, in __init__
_check(_lib.libusb_open(self.devid, byref(self.handle)))
File "/home/testerdell/.local/lib/python2.7/site-packages/usb/backend/libusb1.py", line 595, in _check
raise USBError(_strerror(ret), ret, _libusb_errno[ret])
usb.core.USBError: [Errno 13] Access denied (insufficient permissions)
在 documentation 它建议创建一个规则来授予访问权限,但它对我不起作用。
sudo nano /etc/udev/rules.d/99-escpos.rules
是我用来编辑文件的命令,里面是这个
SUBSYSTEM=="usb", ATTRS{idVendor}=="0fe6", ATTRS{idProduct}=="811e", MODE="0664", GROUP="dialout"
更改该文件中的任何内容后,我 运行 此代码:
sudo service udev restart
我不确定还有什么方法可以让 USB 访问 python。
当使用
的直接根访问时
sudo su root
系统说"ImportError: No module named escpos.printer"。我不想每次都输入root访问密码。
我的 udev 规则、组、模式、用户权限有问题吗?
非常感谢任何帮助!提前致谢:)
在您的 udev 规则中将模式从 664 更改为 666,它将起作用。
所以我一直在关注 these 文档,以便我可以通过 python 在我的热敏打印机上打印。
我 运行宁 Ubuntu 并且安装了 pyusb 模块。 打印机是容大RP58,通过lsusb命令(0fe6:811e)查到idVendor和idProduct。
就像在说明中一样,我输入:
from escpos.printer import Usb
p = Usb(0x0fe6, 0x811e)
但出现错误
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/testerdell/.local/lib/python2.7/site-packages/escpos/printer.py", line 51, in __init__
self.open()
File "/home/testerdell/.local/lib/python2.7/site-packages/escpos/printer.py", line 62, in open
check_driver = self.device.is_kernel_driver_active(0)
File "/home/testerdell/.local/lib/python2.7/site-packages/usb/core.py", line 1061, in is_kernel_driver_active
self._ctx.managed_open()
File "/home/testerdell/.local/lib/python2.7/site-packages/usb/core.py", line 102, in wrapper
return f(self, *args, **kwargs)
File "/home/testerdell/.local/lib/python2.7/site-packages/usb/core.py", line 120, in managed_open
self.handle = self.backend.open_device(self.dev)
File "/home/testerdell/.local/lib/python2.7/site-packages/usb/backend/libusb1.py", line 786, in open_device
return _DeviceHandle(dev)
File "/home/testerdell/.local/lib/python2.7/site-packages/usb/backend/libusb1.py", line 643, in __init__
_check(_lib.libusb_open(self.devid, byref(self.handle)))
File "/home/testerdell/.local/lib/python2.7/site-packages/usb/backend/libusb1.py", line 595, in _check
raise USBError(_strerror(ret), ret, _libusb_errno[ret])
usb.core.USBError: [Errno 13] Access denied (insufficient permissions)
在 documentation 它建议创建一个规则来授予访问权限,但它对我不起作用。
sudo nano /etc/udev/rules.d/99-escpos.rules
是我用来编辑文件的命令,里面是这个
SUBSYSTEM=="usb", ATTRS{idVendor}=="0fe6", ATTRS{idProduct}=="811e", MODE="0664", GROUP="dialout"
更改该文件中的任何内容后,我 运行 此代码:
sudo service udev restart
我不确定还有什么方法可以让 USB 访问 python。 当使用
的直接根访问时sudo su root
系统说"ImportError: No module named escpos.printer"。我不想每次都输入root访问密码。
我的 udev 规则、组、模式、用户权限有问题吗?
非常感谢任何帮助!提前致谢:)
在您的 udev 规则中将模式从 664 更改为 666,它将起作用。