MacOS下VSCode中Python3.10导入自定义模块报错,PyCharm正常
导入报错的原因分析
你的场景明确如下:
目录结构:
|--folder/ |--a.py |--main.py
在a.py中执行import main时触发ModuleNotFoundError,但PyCharm能正常运行,VSCode不行,核心原因是两者对Python模块搜索路径的默认处理逻辑不一样:
PyCharm的自动配置:PyCharm会默认把项目根目录(包含
main.py和folder的那层目录)加入Python的模块搜索路径sys.path。这样a.py导入main时,Python能在搜索路径里找到main.py,自然不会报错。VSCode的默认规则:VSCode不会自动将项目根目录添加到
sys.path,它默认仅把当前执行脚本所在的目录(也就是folder/)纳入搜索路径。而main.py不在这个路径下,Python找不到对应模块,就会抛出找不到模块的错误。
如果要在VSCode中解决这个问题,有两种常用方式:
- 在
a.py开头手动添加项目根目录到搜索路径:
import sys import os # 获取当前脚本的父目录的父目录(即项目根目录) sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) import main
- 在VSCode的
settings.json里配置python.analysis.extraPaths,把项目根目录路径添加进去,让VSCode的Python分析器能识别到main模块。
内容的提问来源于stack exchange,提问作者Anton Migulev
相关产品推荐
相关产品推荐

