Python没有';找不到模块

Python没有';找不到模块,python,import,module,Python,Import,Module,在意识到我不需要卸载的“串行”模块后,我安装了“pyserial”和“serial”模块。我在Python3.8上运行 我在互联网上发现了许多不同代码的尝试和错误,但我仍然有相同的错误,即“AttributeError:module'serial'没有属性'tools'” 这是我的代码,它导入一些包并显示“串行”库的模块: import os import sys import serial import pkgutil package=serial for importer, modnam

在意识到我不需要卸载的“串行”模块后,我安装了“pyserial”和“serial”模块。我在Python3.8上运行

我在互联网上发现了许多不同代码的尝试和错误,但我仍然有相同的错误,即“AttributeError:module'serial'没有属性'tools'”

这是我的代码,它导入一些包并显示“串行”库的模块:

import os
import sys
import serial
import pkgutil

package=serial

for importer, modname, ispkg in pkgutil.iter_modules(package.__path__):
    print ("Found submodule %s (is a package: %s)" % (modname, ispkg))
print(serial)
print(serial.tools)
os.system("pause")
以下是我的输出:

C:\Users\ratchet>C:/Users/ratchet/AppData/Local/Programs/Python/Python38-32/python.exe d:/Documents/Code/USBCom.py
Found submodule aio (is a package: False)
Found submodule rfc2217 (is a package: False)
Found submodule rs485 (is a package: False)
Found submodule serialcli (is a package: False)
Found submodule serialjava (is a package: False)
Found submodule serialposix (is a package: False)
Found submodule serialutil (is a package: False)
Found submodule serialwin32 (is a package: False)
Found submodule threaded (is a package: True)
Found submodule tools (is a package: True)
Found submodule urlhandler (is a package: True)
Found submodule win32 (is a package: False)
<module 'serial' (namespace)>
Traceback (most recent call last):
  File "d:/Documents/Code/USBCom.py", line 11, in <module>
    print(serial.tools)
AttributeError: module 'serial' has no attribute 'tools'
C:\Users\ratchet>C:/Users/ratchet/AppData/Local/Programs/Python/Python38-32/Python.exe d:/Documents/code/USBCom.py
找到子模块aio(是一个包:False)
找到子模块rfc2217(是一个包:False)
找到子模块rs485(是一个包:False)
找到子模块serialcli(是一个包:False)
找到子模块serialjava(是一个包:False)
找到子模块serialposix(是一个包:False)
找到子模块serialutil(是一个包:False)
找到子模块serialwin32(是一个包:False)
发现子模块线程化(是否为包:True)
找到子模块工具(是一个包:True)
找到子模块urlhandler(是一个包:True)
找到子模块win32(是一个包:False)
回溯(最近一次呼叫最后一次):
文件“d:/Documents/Code/USBCom.py”,第11行,在
打印(串行工具)
AttributeError:模块“串行”没有“工具”属性

因此,我假设我的串行模块已导入,并且模块“tools”确实存在,但我仍然不明白为什么它一直告诉我此错误。

如果要打印(serial.tools),请尝试插入行
import serial.tools

为什么会出现这种情况?我编辑了我的答案,以避免暗示没有其他方法可以打印出
串行工具。
。好的,谢谢你,实际上这是我在1小时后使用的代码,请尝试并重试。我想做的是使用函数“serial.tools.list_ports.comports()”,但我不明白为什么它只在我通过“import serial.tools.list_ports.comports”导入时起作用,而在我执行“import serial”时不起作用。只有当软件包
serial
imports
serial.tools.list\u ports.comports
在其
\u init\u.py
文件中时,“import serial”不应该导入serial的所有模块吗。这有效地确保了随机模块被封装,并且不会暴露在顶级包中,除非包维护人员需要这样做。