Windows 10环境下Python导入serial模块报错ModuleNotFoundError的问题求助
看起来你这是典型的Python多版本环境不匹配导致的模块找不到问题,我帮你梳理下核心问题和解决办法:
先揪出问题根源
你贴的信息里藏着关键矛盾:
- 用
python --version查到的是Python 3.9.6,pip也是对应3.9版本的(路径里能看到python39) - 但运行测试代码时,
sys.version输出的却是Python 3.11.3!
这说明你的系统里同时装了Python 3.9和3.11两个版本:你用pip安装的pyserial和serial都在Python3.9的site-packages目录里,但实际运行代码调用的是Python3.11的解释器,自然找不到这些模块。
另外补充下:serial模块确实是pyserial包提供的,你列表里的serial 0.0.97是个无关的第三方包,反而容易混淆,建议卸载掉。
具体解决步骤
确认当前运行代码的Python路径
在你的测试代码里加一行:import sys print(sys.executable)运行后会得到你实际用的Python.exe完整路径,比如大概率是
C:\Users\djcle\AppData\Local\Programs\Python\Python311\python.exe给对应Python版本安装pyserial
用刚才查到的Python解释器路径,通过-m pip安装,确保装到正确环境:C:\Users\djcle\AppData\Local\Programs\Python\Python311\python.exe -m pip install pyserial卸载多余的serial包
同样用对应版本的pip卸载这个易混淆的包:C:\Users\djcle\AppData\Local\Programs\Python\Python311\python.exe -m pip uninstall serial如果你不需要Python3.9环境,也可以把3.9里的serial包一并卸载。
验证运行
之后运行串口脚本时,确保用的是装了pyserial的Python解释器,比如在命令行执行:C:\Users\djcle\AppData\Local\Programs\Python\Python311\python.exe your_script_name.py
后续避坑提醒
Windows下多Python版本共存时,尽量别直接用pip命令,改用python -m pip的方式,这样能100%保证pip和当前使用的Python解释器匹配,不会再出现“装了模块却找不到”的情况。
备注:内容来源于stack exchange,提问作者David Leckie

