打印
[资料干货]

硬件工程师学python1: 发现python的一个bug

[复制链接]
1862|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 苗小科技 于 2020-3-1 20:24 编辑

我算是硬件工程师,最近刚上手python, 做串口的实验,代码是网上搜索的,代码如下:
###################################
import serial #导入模块
import serial.tools.list_ports
port_list = list(serial.tools.list_ports.comports())
print(port_list)
if len(port_list) == 0:
   print('无可用串口')
else:
    for i in range(0,len(port_list)):
        print(port_list)
#############################
执行时老是提示如下信息,
ModuleNotFoundError: No module named 'serial.tools'; 'serial' is not a package
我安装了pyserial和serial也不管用,试了网上说的各种方法,搞了一个小时。直到看到一个网站上说,把“serial.py”的名字改一下。我就把文件名改成了“com.py”, 结果真好了!原来是文件的命名有问题!

后来想想,最好不要用关键字作为文件夹或者文件的名字,python软件也是人写的啊,我们作为用户只能尽量规避!


fix.PNG (13.26 KB )

使用serial作文件名称

使用serial作文件名称

bug.PNG (14.38 KB )

更正serial的错误

更正serial的错误

使用特权

评论回复

相关帖子

沙发
苗小科技|  楼主 | 2020-3-1 21:19 | 只看该作者
本帖最后由 苗小科技 于 2020-3-1 21:22 编辑

发现这里面除了文件名的问题,还有就打大家用python做串口开发,一定是安装pyserial而不是serial!许多人从网上找到串口代码后,直接安装了serial,无法运行,然后又安装pyserial,会出现问题如下。

AttributeError: module 'serial' has no attribute 'Serial'

如果你是按上述情况操作的,即使卸载了serial也无济于事,必须将二者同时卸载,然后单独安装最新版本的pyserial库。

使用特权

评论回复
板凳
simonliu009| | 2020-3-4 10:46 | 只看该作者
这不能算bug,写代码你也要避开保留字,它有个优先级的问题

使用特权

评论回复
评论
苗小科技 2020-4-1 21:21 回复TA
我不这么认为哦,写代码的保留字是被明显强调的,而这个初学者很容易犯这个错误,而且没有在某个地方被明确说明。 
地板
445141126| | 2020-4-13 09:47 | 只看该作者
这是因为你没有理解 python 的模块导入机制.

你这里有个 series.py 的文件, 被 python 当成了 series 模块, 你 import series 相当于自己 import 自己了

使用特权

评论回复
5
苗小科技|  楼主 | 2020-5-25 22:47 | 只看该作者
445141126 发表于 2020-4-13 09:47
这是因为你没有理解 python 的模块导入机制.

你这里有个 series.py 的文件, 被 python 当成了 series 模块 ...

你这个回复我觉着有点道理,谢谢啦。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

46

帖子

0

粉丝