我已经使用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
答案 0 :(得分:0)
我知道了。 原来我将文件命名为serial.py,这会干扰导入序列(duh)
有时候忍不住成为白痴。