Python项目中子模块导入出现ModuleNotFoundError问题咨询
问题解决步骤
首先,你的导入语句存在语法错误,正确写法应为 from module4.submodule1.code import code,但即便修正语法,仍会出现模块找不到的问题,原因如下:
Python 默认只会搜索当前脚本所在目录以及 sys.path(或环境变量 PYTHONPATH)中包含的路径。你的 main_code.py 位于 module1 目录下,而 submodule1 属于同级的 module4,不在 Python 默认搜索路径内,因此需要检查并配置 PYTHONPATH 或 sys.path。
具体解决方案
1. 检查并配置环境变量 PYTHONPATH
- Linux/macOS:在终端执行
echo $PYTHONPATH,查看是否包含项目根目录~/project。若未包含,执行以下命令临时添加:
若需要永久生效,可将该命令添加到export PYTHONPATH="$PYTHONPATH:~/project"~/.bashrc、~/.zshrc等配置文件中。 - Windows:在命令提示符执行
echo %PYTHONPATH%,若未包含项目根目录,执行:
永久配置可通过系统属性的环境变量设置界面添加。set PYTHONPATH=%PYTHONPATH%;C:\Users\你的用户名\project
2. 在代码中临时添加 sys.path
如果不想修改环境变量,可在 main_code.py 开头添加以下代码,将项目根目录加入搜索路径:
import sys from pathlib import Path # 获取项目根目录(main_code.py -> module1 -> project) project_root = Path(__file__).parent.parent sys.path.append(str(project_root)) # 之后正常导入 from module4.submodule1.code import code
3. 确保目录被识别为 Python 包
在 module1、module4、submodule1、submodule2 每个目录下创建空的 __init__.py 文件,Python 会将这些目录识别为可导入的包。
内容的提问来源于stack exchange,提问作者Hozefa
相关产品推荐
相关产品推荐

