Pyusb on Windows 7 - NotImplemented Error :is_kernal_driver_active
Pyusb on Windows 7 - NotImplemented Error :is_kernal_driver_active
我正在使用 escposprinter python 库在热敏打印机上打印我的数据。这取决于 pyusb。该库在 linux 中运行良好。在 windows 7 时,我发现它有一些问题。这是我得到的输出。
File "main.py", line 1, in <module>
from app import app
File "D:\freeth-in-erp-60ab8eb96fad\app\__init__.py", line 94, in <module>
from .api_routes import *
File "D:\freeth-in-erp-60ab8eb96fad\app\api_routes.py", line 44, in <module>
from .printer import pos
File "D:\freeth-in-erp-60ab8eb96fad\app\printer\pos.py", line 14, in <module>
Epson = printer.Usb(idVendor=0x0416,idProduct=0x5011)
File "D:\freeth-in-erp-60ab8eb96fad\venv\lib\site-packages\escposprinter\print
er.py", line 37, in __init__
self.open()
File "D:\freeth-in-erp-60ab8eb96fad\venv\lib\site-packages\escposprinter\print
er.py", line 46, in open
if self.device.is_kernel_driver_active(0):
File "D:\freeth-in-erp-60ab8eb96fad\venv\lib\site-packages\usb\core.py", line
1064, in is_kernel_driver_active
interface)
File "D:\freeth-in-erp-60ab8eb96fad\venv\lib\site-packages\usb\backend\__init_
_.py", line 365, in is_kernel_driver_active
_not_implemented(self.is_kernel_driver_active)
File "D:\freeth-in-erp-60ab8eb96fad\venv\lib\site-packages\usb\backend\__init_
_.py", line 81, in _not_implemented
raise NotImplementedError(func.__name__)
NotImplementedError: is_kernel_driver_active
我从 libusb.info 下载 libusb-1.20 并从 MinGW32 复制文件 libusb-1.0.dll 并粘贴到 "C:\windows\System32"。我得到以下结果。
from app import app
File "D:\freeth-in-erp-60ab8eb96fad\app\__init__.py", line 94, in <module>
from .api_routes import *
File "D:\freeth-in-erp-60ab8eb96fad\app\api_routes.py", line 44, in <module>
from .printer import pos
File "D:\freeth-in-erp-60ab8eb96fad\app\printer\pos.py", line 14, in <module>
Epson = printer.Usb(idVendor=0x0416,idProduct=0x5011)
File "D:\freeth-in-erp-60ab8eb96fad\venv\lib\site-packages\escposprinter\print
er.py", line 37, in __init__
self.open()
File "D:\freeth-in-erp-60ab8eb96fad\venv\lib\site-packages\escposprinter\print
er.py", line 46, in open
if self.device.is_kernel_driver_active(0):
File "D:\freeth-in-erp-60ab8eb96fad\venv\lib\site-packages\usb\core.py", line
1064, in is_kernel_driver_active
interface)
File "D:\freeth-in-erp-60ab8eb96fad\venv\lib\site-packages\usb\backend\libusb1
.py", line 898, in is_kernel_driver_active
intf)))
File "D:\freeth-in-erp-60ab8eb96fad\venv\lib\site-packages\usb\backend\libusb1
.py", line 593, in _check
raise NotImplementedError(_strerror(ret))
NotImplementedError: Operation not supported or unimplemented on this platform
我的代码是
`
from escposprinter import *
from tabulate import tabulate
Epson = printer.Usb(0x0416,0x5011)
来自库 escposprinter
class Usb(Escpos):
""" Define USB printer """
def __init__(self, idVendor, idProduct, interface=0, in_ep=0x82, out_ep=0x01):
"""
@param idVendor : Vendor ID
@param idProduct : Product ID
@param interface : USB device interface
@param in_ep : Input end point
@param out_ep : Output end point
"""
self.idVendor = idVendor
self.idProduct = idProduct
self.interface = interface
self.in_ep = in_ep
self.out_ep = out_ep
self.open()
def open(self):
""" Search device on USB tree and set is as escpos device """
self.device = usb.core.find(idVendor=self.idVendor, idProduct=self.idProduct)
if self.device is None:
print ("Cable isn't plugged in")
if self.device.is_kernel_driver_active(0):
try:
self.device.detach_kernel_driver(0)
except usb.core.USBError as e:
print ("Could not detatch kernel driver: %s" % str(e))
帮我看看你的建议
`
问题很简单,就是检查内核驱动程序是否处于活动状态,这在 Windows 上是不可能的。看来这个库根本不是为在 Windows.
上使用而编写的
如果您从源代码中删除以 if self.device.is_kernel_driver_active(0):
开头的最后 5 行,或者事先检查代码是否在 Windows 上运行并且不这样做,则可以在 Windows 上使用它打电话给他们。
请记住 Windows 您需要安装自己的驱动程序。我建议使用 Zadig 创建 and/or 安装驱动程序。
我正在使用 escposprinter python 库在热敏打印机上打印我的数据。这取决于 pyusb。该库在 linux 中运行良好。在 windows 7 时,我发现它有一些问题。这是我得到的输出。
File "main.py", line 1, in <module>
from app import app
File "D:\freeth-in-erp-60ab8eb96fad\app\__init__.py", line 94, in <module>
from .api_routes import *
File "D:\freeth-in-erp-60ab8eb96fad\app\api_routes.py", line 44, in <module>
from .printer import pos
File "D:\freeth-in-erp-60ab8eb96fad\app\printer\pos.py", line 14, in <module>
Epson = printer.Usb(idVendor=0x0416,idProduct=0x5011)
File "D:\freeth-in-erp-60ab8eb96fad\venv\lib\site-packages\escposprinter\print
er.py", line 37, in __init__
self.open()
File "D:\freeth-in-erp-60ab8eb96fad\venv\lib\site-packages\escposprinter\print
er.py", line 46, in open
if self.device.is_kernel_driver_active(0):
File "D:\freeth-in-erp-60ab8eb96fad\venv\lib\site-packages\usb\core.py", line
1064, in is_kernel_driver_active
interface)
File "D:\freeth-in-erp-60ab8eb96fad\venv\lib\site-packages\usb\backend\__init_
_.py", line 365, in is_kernel_driver_active
_not_implemented(self.is_kernel_driver_active)
File "D:\freeth-in-erp-60ab8eb96fad\venv\lib\site-packages\usb\backend\__init_
_.py", line 81, in _not_implemented
raise NotImplementedError(func.__name__)
NotImplementedError: is_kernel_driver_active
我从 libusb.info 下载 libusb-1.20 并从 MinGW32 复制文件 libusb-1.0.dll 并粘贴到 "C:\windows\System32"。我得到以下结果。
from app import app
File "D:\freeth-in-erp-60ab8eb96fad\app\__init__.py", line 94, in <module>
from .api_routes import *
File "D:\freeth-in-erp-60ab8eb96fad\app\api_routes.py", line 44, in <module>
from .printer import pos
File "D:\freeth-in-erp-60ab8eb96fad\app\printer\pos.py", line 14, in <module>
Epson = printer.Usb(idVendor=0x0416,idProduct=0x5011)
File "D:\freeth-in-erp-60ab8eb96fad\venv\lib\site-packages\escposprinter\print
er.py", line 37, in __init__
self.open()
File "D:\freeth-in-erp-60ab8eb96fad\venv\lib\site-packages\escposprinter\print
er.py", line 46, in open
if self.device.is_kernel_driver_active(0):
File "D:\freeth-in-erp-60ab8eb96fad\venv\lib\site-packages\usb\core.py", line
1064, in is_kernel_driver_active
interface)
File "D:\freeth-in-erp-60ab8eb96fad\venv\lib\site-packages\usb\backend\libusb1
.py", line 898, in is_kernel_driver_active
intf)))
File "D:\freeth-in-erp-60ab8eb96fad\venv\lib\site-packages\usb\backend\libusb1
.py", line 593, in _check
raise NotImplementedError(_strerror(ret))
NotImplementedError: Operation not supported or unimplemented on this platform
我的代码是 `
from escposprinter import *
from tabulate import tabulate
Epson = printer.Usb(0x0416,0x5011)
来自库 escposprinter
class Usb(Escpos):
""" Define USB printer """
def __init__(self, idVendor, idProduct, interface=0, in_ep=0x82, out_ep=0x01):
"""
@param idVendor : Vendor ID
@param idProduct : Product ID
@param interface : USB device interface
@param in_ep : Input end point
@param out_ep : Output end point
"""
self.idVendor = idVendor
self.idProduct = idProduct
self.interface = interface
self.in_ep = in_ep
self.out_ep = out_ep
self.open()
def open(self):
""" Search device on USB tree and set is as escpos device """
self.device = usb.core.find(idVendor=self.idVendor, idProduct=self.idProduct)
if self.device is None:
print ("Cable isn't plugged in")
if self.device.is_kernel_driver_active(0):
try:
self.device.detach_kernel_driver(0)
except usb.core.USBError as e:
print ("Could not detatch kernel driver: %s" % str(e))
帮我看看你的建议 `
问题很简单,就是检查内核驱动程序是否处于活动状态,这在 Windows 上是不可能的。看来这个库根本不是为在 Windows.
上使用而编写的如果您从源代码中删除以 if self.device.is_kernel_driver_active(0):
开头的最后 5 行,或者事先检查代码是否在 Windows 上运行并且不这样做,则可以在 Windows 上使用它打电话给他们。
请记住 Windows 您需要安装自己的驱动程序。我建议使用 Zadig 创建 and/or 安装驱动程序。