Spyder IDE中子模块基础导入失败问题排查
解决ModuleNotFoundError: No module named 'sub'的常见原因
当前工作目录不匹配
Spyder默认工作目录可能未指向项目根目录(即包含main.py和sub文件夹的目录)。Python只会在当前工作目录及sys.path路径中查找模块,若根目录不在其中就会报错。
解决方式:- 在Spyder中通过
文件 > 设置 > 运行 > 工作目录,将路径修改为项目根目录; - 在
main.py开头添加代码强制切换到脚本所在目录:import os os.chdir(os.path.dirname(os.path.abspath(__file__)))
- 在Spyder中通过
项目根目录未加入Python搜索路径
即使工作目录正确,sys.path中可能没有包含项目根目录。可以先在main.py开头添加代码查看当前搜索路径:import sys print(sys.path)若项目根目录不在输出列表中,手动添加:
import sys import os project_root = os.path.dirname(os.path.abspath(__file__)) if project_root not in sys.path: sys.path.append(project_root)__init__.py文件异常
虽然你已添加__init__.py,但如果文件存在语法错误,会影响模块识别。检查sub文件夹下的__init__.py,确保文件无语法问题(空文件是允许的)。Spyder运行配置错误
若通过右键或快捷方式运行main.py,Spyder可能未正确使用项目根目录作为工作目录。可以通过运行 > 配置文件,手动设置工作目录为项目根目录后重新运行。缓存干扰
Python字节码缓存(__pycache__文件夹)或Anaconda环境缓存可能导致异常。删除项目中的__pycache__文件夹,重启Spyder和Anaconda环境后再尝试运行。
内容的提问来源于stack exchange,提问作者ascripter
相关产品推荐
相关产品推荐

