VS Code中Python跨文件夹导入模块提示No module named 'ch6'如何解决
跨文件夹导入报错的核心原因
Python导入模块时,仅会从预设的路径列表中搜索目标模块,搜索优先级如下:
- 当前运行脚本的工作目录
- 系统环境变量PYTHONPATH配置的目录
- Python内置标准库目录
- 第三方库安装目录(通常为site-packages)
你当前的目录结构如下:
项目根目录 ├── ch6 │ └── RandomCharacter.py └── ch7 └── CountLettersInList.py
你直接运行ch7下的CountLettersInList.py时,Python的工作目录是ch7文件夹,该文件夹下既没有ch6子文件夹,也没有RandomCharacter.py文件,因此两种导入方式都会报错:
import ch6.RandomCharacter:ch7目录下找不到ch6模块/文件夹,触发No module named 'ch6'报错import RandomCharacter:ch7目录下不存在RandomCharacter.py文件,触发No module named 'RandomCharacter'报错
当你把CountLettersInList.py复制到ch6文件夹运行时,工作目录变为ch6文件夹,目录下刚好存在RandomCharacter.py文件,因此可以正常导入。
可选修复方案
如果要保持现有目录结构正常导入,可参考以下操作:
- 把项目根目录添加到Python搜索路径,在CountLettersInList.py最开头添加代码:
import sys from pathlib import Path sys.path.append(str(Path(__file__).parent.parent))
- 在项目根目录、ch6、ch7文件夹下分别创建空的
__init__.py文件,将对应目录标记为可导入的Python包 - 运行脚本时从项目根目录执行,命令为
python -m ch7.CountLettersInList
内容的提问来源于stack exchange,提问作者KishuInu
相关产品推荐
相关产品推荐

