PyCharm运行正常但终端报ModuleNotFoundError的原因与解决方法
解决终端运行PyCharm项目时
ModuleNotFoundError: No module named 'utilities'的问题 我遇到过完全一样的问题!这本质上是PyCharm和终端对Python模块搜索路径的处理方式不一样导致的,咱们先理清楚原因,再看解决办法:
问题原因
PyCharm会自动把你的项目根目录(也就是project folder)添加到Python的模块搜索路径(sys.path)里,所以它能顺利找到utilities这个包。但终端默认只会把当前运行脚本的目录或者系统默认的Python路径加入sys.path——比如你直接在work目录下跑main.py,或者在其他目录执行脚本时,Python找不到utilities所在的项目根目录,自然就抛出ModuleNotFoundError了。
解决方法
方法一:从项目根目录用模块方式运行(推荐)
这是Python官方推荐的规范运行方式,步骤很简单:
- 打开终端,切换到你的项目根目录(
project folder) - 执行以下命令:
这种方式会让Python自动把当前目录(项目根)加入模块搜索路径,完美适配你的导入写法,不会再出现找不到模块的问题。python -m work.main
方法二:临时设置PYTHONPATH环境变量
如果你不想切换目录,可以临时把项目根目录加到PYTHONPATH环境变量中,让Python能找到utilities包:
- Windows cmd终端:
set PYTHONPATH=你的项目根目录绝对路径 python work\main.py - Linux/macOS终端:
注意:这个设置只在当前终端会话有效,关闭终端后就会失效,适合临时调试用。export PYTHONPATH=你的项目根目录绝对路径 python work/main.py
方法三:在main.py中手动添加路径
可以在main.py的最开头加入一段代码,手动把项目根目录加入Python的搜索路径:
import sys import os # 获取当前脚本所在目录的父目录(也就是项目根目录) project_root = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) sys.path.append(project_root)
添加后,不管你从哪个目录运行main.py,Python都能找到utilities包。不过这种方式属于硬编码路径,适合个人项目快速解决,团队协作时更推荐用前两种方法来统一环境配置。
内容的提问来源于stack exchange,提问作者User
相关产品推荐
相关产品推荐

