使用patch修补python中serial.tools中的一个Bug

来源:互联网 发布:安利网络直销模式 编辑:程序博客网 时间:2024/06/11 05:03

    今天在写python的时候遇到了一个错误:

port_list = list(serial.tools.list_ports.comports())
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.7/dist-packages/serial/tools/list_ports_posix.py", line 122, in comports
    return [(d, describe(d), hwinfo(d)) for d in devices]
  File "/usr/lib/python2.7/dist-packages/serial/tools/list_ports_posix.py", line 93, in describe
    return usb_lsusb_string(sys_usb)
  File "/usr/lib/python2.7/dist-packages/serial/tools/list_ports_posix.py", line 80, in usb_lsusb_string
    return base
NameError: global name 'base' is not defined

像往常一样,把错误原因复制下来,在google上搜索,看看还有哪个倒霉蛋和我一样,结果是肯定的,是有这样的倒霉蛋。

经过查找,发现是python的serial.tools中的一个Bug,不是我的代码的问题,心中顿时。。。

遇到问题就解决呗,先看看其他倒霉蛋怎么解决的:http://sourceforge.net/p/pyserial/patches/26/。

呃呃呃,好吧,上面的楼主把问题贴出来,二楼给了一个.diff文件,三楼就一个Thanks结束了。。。这不是欺负我等英语渣渣的初级程序猿呢?

没办法,问题还是要解决的。首先把什么是diff文件google了一下,奥,原来是一个补丁文件,怎么用呢?用patch工具。那patch工具又怎么用呢?

首先,先切换到要打补丁的那个文件下,然后patch list_ports_posix.py (补丁文件的目录),当然,保险起见,首先备份一下。之后把原来的.pyc给删掉。


再次进入到python命令行中,一开始的代码可以用了。。。

over

(By the way,我只是为了解决问题,所以许多细节我没有深入了解,有时间我再深入了解)
0 0
原创粉丝点击