pycharm报“找不到文件”或“modulenotfounderror”主因是工作目录未正确配置或python解释器指向错误环境;默认以脚本所在目录为工作目录,导致相对路径解析失败,需在run/debug configurations中手动设为项目根目录并匹配解释器路径。

PyCharm 运行脚本时提示“找不到文件”或“ModuleNotFoundError”,绝大多数情况不是代码写错了,而是工作目录(Working Directory)没设对,或者 Python 解释器路径本身指向了错误环境。
为什么 PyCharm 会找不到相对路径的文件?
PyCharm 默认把“当前脚本所在目录”当作工作目录。比如你在 tools/train.py 点右键运行,工作目录就是 tools/,而不是项目根目录。这时代码里写的 ./configs/yolox_s.yaml 就会去 tools/configs/ 下找,自然报 FileNotFoundError。
- 工作目录 ≠ 脚本所在目录,也不等于项目根目录,它完全可配
-
__file__返回的是脚本路径,但open("data.txt")的查找起点是工作目录,不是__file__所在位置 - Linux 终端或命令行直接运行时,工作目录是你执行
python xxx.py时所在的目录;PyCharm 默认不继承这个行为
怎么改工作目录?
在运行/调试配置里手动指定,这是最直接有效的解法。
PyCharm 2026.2是 JetBrains PyCharm 的指定版本安装包,下载地址指向官方 Windows 安装包直链,可用于旧项目兼容、版本回退和环境测试。
- 点击右上角运行配置名称 → Edit Configurations…
- 找到 Working directory 字段
- 填入项目根路径,例如:
/home/user/YOLOX_PROJECT或C:\work\YOLOX_PROJECT - 勾选 Add content root to PYTHONPATH 和 Add source roots to PYTHONPATH(避免包导入失败)
- 保存后重新运行,所有
./configs/、../datasets/都能正确解析了
为什么终端里 pip install 了却 still ModuleNotFoundError?
常见于 Windows + PowerShell 终端场景:PowerShell 执行策略(ExecutionPolicy)默认为 Restricted,会静默阻止 conda activate 或虚拟环境激活脚本运行,导致终端看似激活了环境,实际 PYTHONPATH 和 PATH 并未更新。
- 在 PyCharm 终端中执行:
Get-ExecutionPolicy,如果返回Restricted,就确认是这个问题 - 临时修复:
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser - 更稳妥的做法:在 PyCharm 设置中把终端 Shell path 改成
cmd.exe或bash(Linux/macOS),绕过 PowerShell 限制 - 验证是否生效:运行
python -c "import sys; print(sys.executable)",输出路径必须和你在Project Interpreter里配置的一致
脚本里动态加路径靠谱吗?
用 os.path.abspath(__file__) 推导根目录再塞进 sys.path,适合部署到服务器或 CI 环境,但在 PyCharm 里属于“补救手段”,不该是首选。
- 示例写法:
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) - 问题在于:每次 import 都要重复这段逻辑;多人协作时容易漏写;且无法解决配置文件、数据集等非 Python 文件的路径问题
- 真正该优先做的,是统一配置好
Working directory和Python Interpreter,让环境行为和预期一致 - 只在必须支持多入口点(如不同子目录下都有
main.py)时,才考虑封装路径推导逻辑
工作目录和解释器路径这两个配置项,看着不起眼,但一旦出错,表现出来的症状五花八门——文件找不到、模块找不到、甚至某些库初始化失败。调的时候别急着改代码,先看这两处设置是否真实匹配你的项目结构。










