iokit.ioServiceGetMatchingService在Python3下中断?

iokit.ioServiceGetMatchingService在Python3下中断?,python,macos,python-3.x,pyserial,Python,Macos,Python 3.x,Pyserial,我刚买了一台运行Yosemite的mac mini(我通常使用linux)。我试图让serial.tools.list_ports.comports()在Python3下工作 我已将问题缩小到以下代码片段(摘自pyserial): 如果我在python2下运行这个,那么它可以正常工作: 382 >python bug.py ('kIOMasterPortDefault =', c_void_p(None)) ('serial_port_iterator =', c_void_p(4355

我刚买了一台运行Yosemite的mac mini(我通常使用linux)。我试图让serial.tools.list_ports.comports()在Python3下工作

我已将问题缩小到以下代码片段(摘自pyserial):

如果我在python2下运行这个,那么它可以正常工作:

382 >python bug.py 
('kIOMasterPortDefault =', c_void_p(None))
('serial_port_iterator =', c_void_p(4355))
然而,当我在Python3下运行它时,它失败了(串行端口迭代器保持为c_void_p(无))

有人知道为什么在Python3下会失败吗?也许还有人知道如何修复它吗?

好的-找到了答案

Python3将字符串作为unicode(宽)字符串传递,而Python2将字符串作为窄字符串传递

那么改变这条线

iokit.IOServiceMatching('IOSerialBSDClient'),
阅读

iokit.IOServiceMatching(b'IOSerialBSDClient'),
使其适用于Python2和pytho3

现在看看我能不能换成pyserial

iokit.IOServiceMatching('IOSerialBSDClient'),
iokit.IOServiceMatching(b'IOSerialBSDClient'),