pySerial AttributeError: module 'serial' has no attribute 'Serial' pySerial错误:模块“serial”没有“Serial”属性。

5

我有Windows 7 64位和Python 3.6。

我曾经在整个网络上搜索解决方法,但可悲的是没有一个有效的方法。

AttributeError                            Traceback (most recent call last)
<ipython-input-150-80ee8bd5f0f2> in <module>()
----> serial.Serial()

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

我试图通过以下方法解决问题: - 检查文件名是否为serial.py。 - 重新安装模块 - 最初整个模块都不起作用,现在只有它的一些函数可以使用。 - 我无法使用其任何功能,检查端口也不起作用,基本上什么都不行。 - 我检查了我的pip - 一切正常,该模块位于site-packages文件夹中。 - 如果我在pySerial文件中执行某些代码,则它可以正常工作。但是没有serial.Serial或与COM端口连接(这是我想做的)。

你能确认一下你用 pip freeze 安装的 pyserial 版本吗?在一个干净的 Python 3.6 环境中进行全新的 pip 安装,同时安装 pyserial 3.4 对我来说没有任何问题。 - Steven Walton
我有相同的 - PySerial 3.4 和 Python 3.6。 - TypoweEhhhh
3个回答

6

我在Cygwin中安装的Python3 3.6.3.1也遇到了同样的问题。我将其替换为3.4.5.1后脚本再次正常运行。但这不是一个好的长期解决方案。

更好的解决方案:我重新安装了Python3 3.6.3.1,接着执行"pip install pyserial",然后就可以运行我的脚本了。当我执行help("modules")时没有出现任何额外的模块,但是串行通讯肯定添加了一些额外功能。


1

如果您正在使用Windows Subsystem for Linux(WSL)而不是虚拟机,则会出现此错误。要解决此问题,请进入powershell并输入以下命令:

wsl --shutdown

重新启动 powershell,再次运行 pyautogui 脚本即可解决问题。

0
有另一个名为“serial”的Python模块,可能已经安装在您的系统上。我正在使用一个导入“serial”模块的程序,在我的Linux机器上,当以一个用户身份执行时可以运行,但在另一个用户身份下执行时则失败。
以user2用户身份运行该程序时,我得到了以下回溯:
Traceback (most recent call last):
  File "./grabserial", line 957, in <module>
    restart_requested = grab(sys.argv[1:])
  File "./grabserial", line 365, in grab
    sd = serial.Serial()
AttributeError: 'module' object has no attribute 'Serial'

我发现我在/home/user1/.local/lib/python2.7/site-packages/serial/init.pyc中有pyserial的“serial”模块,但是其他用户从/usr/local/lib/python2.7/dist-packages/serial获取了串行模块。

有两个不同的Python包向系统呈现名为“serial”的模块。

一个模块由pip称为“serial”(这是一个序列化库),另一个称为“pyserial”(这是一个串口处理库)。

如果您想使用串口处理模块,则简单的解决方法是使用pip卸载序列化模块,并确保安装了“pyserial”。

在我的情况下,我正在使用在我的机器上使用python 2.7的程序,所以我执行了以下操作:

   $ pip2 uninstall serial
   $ pip2 install pyserial

我以 'root' 的身份进行了此操作,以便pyserial模块可以全局安装(适用于所有用户)。 显然,user1已经运行了pip来安装pyserial作为其帐户的本地软件包(因此可以在该帐户上工作),但为了让其他用户使用该模块,必须将该模块全局安装。 此外,还需要解决与 'serial' 模块的冲突。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接