根本原因是pycharm运行代码的python解释器与执行pip install的环境不一致,即安装路径和查找路径不匹配;需统一解释器、检查命名冲突、激活对应虚拟环境并刷新ide缓存。

PyCharm 报 ModuleNotFoundError 但你在终端里明明用 pip install 成功装过——这几乎 100% 是解释器环境不一致,不是包没装,而是装错了地方。
PyCharm 用的解释器和你 pip 安装的环境对不上
这是最常见、也最容易被忽略的根源。你执行 pip install requests 时,命令运行在系统终端(比如 zsh 或 PowerShell),它默认调用的是你 PATH 里的 Python,比如 /usr/bin/python3 或 ~/miniconda3/envs/myenv/bin/python;而 PyCharm 默认创建项目时会新建一个虚拟环境(如 ./venv 或 ./.idea/Python_Interpreter),并把它设为项目解释器——这个环境里压根没装过任何包。
- 验证方法:在 PyCharm 的
Terminal里运行which python和python -c "import sys; print(sys.executable)",对比你手动安装时用的 Python 路径是否一致 - 快速修复:进入
File → Settings → Project → Python Interpreter,点击右上角齿轮图标 →Add...→ 选择 “System Interpreter”,然后指向你真正装了包的那个 Python 可执行文件(例如~/anaconda3/envs/exp/bin/python) - 别点“OK”就完事:确认后重启 PyCharm,或至少重载解释器列表,否则缓存可能让你误以为已生效
项目里有同名 .py 文件,偷偷覆盖了标准库或第三方模块
比如你建了个 json.py 或 requests.py,Python 导入时会优先加载当前目录下的同名文件,而不是标准库或 site-packages 里的真实模块——这时报错 No module named 'json' 就不是环境问题,而是命名冲突。
PyCharm 2026.2是 JetBrains PyCharm 的指定版本安装包,下载地址指向官方 Windows 安装包直链,可用于旧项目兼容、版本回退和环境测试。
- 检查方式:在出错位置加一行
import json; print(json.__file__),如果路径指向你自己的json.py,那就坐实了 - 解决办法:立刻重命名冲突文件(如改成
my_json_handler.py),删掉生成的json.pyc或__pycache__/目录 - 特别注意:
os.py、sys.py、http.py这类名字极易踩坑,IDE 有时不会高亮警告,但导入必崩
PyCharm Terminal 没激活目标环境,pip 装到空壳里了
即使你在 PyCharm 底部开了 Terminal,它默认并不自动激活项目解释器对应的虚拟环境(尤其是 conda 环境)。你敲 pip install torch,看起来成功了,其实装进了系统 Python 或一个没被 PyCharm 绑定的环境里。
- 关键动作:先在 Terminal 里手动激活目标环境,比如
conda activate pytorch_env或source ./venv/bin/activate,再运行pip install - 验证是否生效:激活后运行
pip list | grep torch,必须看到输出;同时确认python -c "import torch"不报错 - 省事技巧:PyCharm 设置里勾选
Settings → Tools → Terminal → Activate virtualenv,以后 Terminal 启动就自动带环境
包装了但 import 路径写错了,尤其多层目录项目
不是所有 ModuleNotFoundError 都是环境问题。当你从子目录运行脚本,或用了相对导入(from ..utils import helper),而当前工作目录(os.getcwd())不是包根目录,Python 就找不到上级模块。
- 典型现象:命令行进到
project/src/下运行python main.py成功,但在 PyCharm 里直接右键 Run 却报错——因为 PyCharm 默认把项目根设为工作目录,而你的 import 假设工作目录是src/ - 临时解法:右键 Run →
Modify Run Configuration → Working directory改成$ProjectFileDir$/src - 长期建议:避免依赖工作目录,改用绝对导入 + 正确的
__init__.py结构,或用-m方式运行(如python -m src.main)
真正卡住人的,往往不是“没装包”,而是“装对了但 PyCharm 没看见”,或者“看见了却读错了”。排查时盯死两件事:解释器路径是否一致、当前工作目录是否匹配 import 逻辑——其余都是干扰项。










