【问题标题】:Resolving ModuleNotFoundError when executing from file从文件执行时解决 ModuleNotFoundError
【发布时间】:2019-05-12 21:05:20
【问题描述】:

我已经使用 pip3 安装了 pyserial 模块。导入该模块并在 IDLE shell 中逐行执行(复制和粘贴)程序可以正常工作,但运行文件(使用 IDLE)会导致 ModuleNotFoundError。

我的 python 版本是 MacOS 10.14.5 上的 3.7.3

我比较了 sys.version、sys.path 和 sys.executable。 sys.version 是

"3.7.3 (v3.7.3:ef4ec6ed12, Mar 25 2019, 16:52:21) \n[Clang 6.0 (clang-600.0.57)]"

sys.executable 是

/Library/Frameworks/Python.framework/Versions/3.7/bin/python3.7

sys.path 是

['', '/Users/edidos/Documents', '/Library/Frameworks/Python.framework/Versions/3.7/lib/python37.zip', '/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7', '/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload', '/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages']

除了 sys.path[0] 从文件运行时引用文件位置之外,没有任何区别。

import sys

print(sys.path)
print()
print(sys.version)
print()
print(sys.executable)

import serial.tools.list_ports
ports = serial.tools.list_ports.comports()

for port, desc, hwid in sorted(ports):
        print("{}: {} [{}]".format(port, desc, hwid))

这是确切的错误:

Traceback (most recent call last):
  File "/Users/edidos/Projecte/PythonRPLidar/serial.py", line 9, in <module>
    import serial.tools.list_ports
  File "/Users/edidos/Projecte/PythonRPLidar/serial.py", line 9, in <module>
    import serial.tools.list_ports
ModuleNotFoundError: No module named 'serial.tools'; 'serial' is not a package

【问题讨论】:

  • 使用from serial import tool 代替import serial.tools.list_ports 使用list_ports 作为tools.list_port

标签: python


【解决方案1】:

我想通了。 原来我将文件命名为 serial.py,它干扰了导入序列(duh)

有时会忍不住做个白痴。

【讨论】:

    猜你喜欢
    • 2020-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-30
    • 1970-01-01
    • 2017-08-12
    • 2021-02-08
    • 2018-12-12
    相关资源
    最近更新 更多