Python教程

VScode python导入上级目录坑

本文主要是介绍VScode python导入上级目录坑,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

今天在使用 vs code 运行 python 准备导入上级目录中的一个文件时,发现总是会报错

ImportError: No module named *
import sys
sys.path.append("..")
from demo1.a1.three import * 
test()

同样的一段代码,在 pycharm 上可以正常运行,但是在 vscode 中却会报错
在这里插入图片描述

百思不得其解,博客翻找了半天,终于发现原来是 vs code 的一个暗坑如下
目录结构

.
├── at
│   └── views.py
├── demo1
│   └── a1
│       └── three.py
├── demo2
│   └── two.py
└── one.py

我想做的是在 at 目录中的 view.py 文件中导入 demo1/a1 目录下的 three 模块,使用其test函数
问题原因
为什么会报错呢?既然在 pycharm 上可以正常运行,那么说明我的代码是没有问题的,问题只能出在 vs code 上!所以一定是 vs code 对于python的目录设置出了问题
vs code里面,在工程子文件夹下面 os.getcwd() 返回的不是当前路径,而是当前工程路径(就是.vscode文件夹路径)。
所以,使用sys.path.append()代码并不能正确地设置目录,因为vscode相对的路径就不正确呀! 所以自然也就找不到模块了。
解决方式
1)编辑 launch.json 文件
如果使用的是 VS code 自带的运行器,我们就需要自己来配置launch.json 文件
在这里插入图片描述

默认的 python 配置并没有配置 cwd ,这个变量默认设置的是 workspaceFolder,所以这时候就需要我们将它手动改成 fileDirname
在这里插入图片描述

这时候就可以正常导入模块了
2)使用 code——runner 插件
如果使用的是 code——runner 插件来运行python,我们需要在 setting.json 全局设置中添加一行代码
在这里插入图片描述

看名字就知道,其实原理和编辑 launch.json 是相同的,这样运行起来环境就是当前运行文件的路径了

这篇关于VScode python导入上级目录坑的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!