根本原因是PyCharm右键Run时默认以脚本所在目录为工作目录,而非项目根目录,导致sys.path[0]不包含被导入模块所在路径;需在运行配置中设置Working directory为项目根目录并勾选“Add content roots to PYTHONPATH”。

PyCharm里右键Run出错:ModuleNotFoundError: No module named 'xxx'
根本原因不是路径没配对,而是PyCharm默认以当前脚本所在目录为sys.path[0],不自动把项目根目录或其它文件夹加进Python路径。你看到的“找不到模块”,其实是导入语句(比如import utils)在当前工作目录下搜不到utils.py。
- 确认你的项目结构——比如
project_root/下有main.py和src/worker.py,而worker.py里写了from utils import helper,但utils.py在project_root/utils/下 - 不要靠手动改
sys.path硬塞路径(易出错、不可移植),优先用PyCharm的运行配置控制入口和环境 - 右键Run时,PyCharm会按“当前文件所在目录”设为Working directory,而不是项目根目录——这是多数人踩坑的起点
设置正确的Working directory和Python path
打开Run → Edit Configurations…,选中你要运行的配置(或新建一个),重点调两处:
-
Working directory:改成项目根目录路径,比如
/Users/me/myproject(不是脚本所在子目录) -
Add content roots to PYTHONPATH:勾上(PyCharm 2023.2+ 默认开启;旧版本在
Modify option → Add content roots to PYTHONPATH) - 如果用了
src作为源码根目录(常见于Maven/Gradle风格结构),右键src文件夹 →Mark Directory as → Sources Root,PyCharm会自动把它加进PYTHONPATH
跨文件夹import时怎么写才稳定
别依赖相对导入(from ..utils import helper)跑单个脚本——它只在package内通过python -m方式执行才可靠,直接Run会报ValueError: attempted relative import with no known parent package。
PyCharm 2026.2是 JetBrains PyCharm 的指定版本安装包,下载地址指向官方 Windows 安装包直链,可用于旧项目兼容、版本回退和环境测试。
- 统一用绝对导入:假设项目根目录已标记为Sources Root,
src/worker.py里就写from utils.helper import do_work - 避免在脚本顶部加
sys.path.insert(0, '../')这类硬编码路径——换机器或CI环境就失效 - 如果必须临时调试某个深层脚本,右键→
Run 'worker.py'后,PyCharm会自动生成配置;这时进去检查Working directory是否被悄悄改回了src/目录——手动改回来
命令行能跑,PyCharm Run不了?查这三点
常见“命令行OK,IDE报错”本质是环境不一致。重点对比:
- PyCharm用的Python解释器是否和终端一致?看
File → Settings → Project → Python Interpreter,对比which python输出 - 终端里
pwd在哪?PyCharm配置里的Working directory是否与之相同? - 有没有在终端里提前
export PYTHONPATH=...?PyCharm默认不继承shell环境变量,需在运行配置里手动填入Environment variables(如PYTHONPATH=/path/to/project)
跨文件夹运行的本质,是让Python能找到所有被导入的模块。PyCharm不是黑盒,它只是帮你封装了python -m和路径管理——关键参数漏一个,ImportError就立刻出现。

















