彻底解决VScode中采用python import自定义模块显示unresolved import 问题 和 无法跳转到自定义模块函数定义

最近在学习一个python代码时候,发现自定义的模块并不能被VScode编辑器所解析,出现如下图所示的提示:

这个问题对于有洁癖的程序员来说,简直不能忍。作为具有一定python经验的程序员来说,可以猜到是pythonpath

环境变量的问题。我在百度上找了好久,也没找到合适的解决方案。有的方案竟然是直接把这个错误提示关闭掉。。。

 

最终,在github的讨论中找到了相关解决方案(果然很多问题,需要去官方讨论区去学习经验-_-!),链接放在这里,

英文可以的童鞋自行阅读https://github.com/Microsoft/vscode-python/issues/3840. 下面,我们先来看下解决方案,后面

再讲解原理。

 

首先打开launch.json文件(在项目目录隐藏文件夹.vscode下面),添加"env"跟“envFile”两个条目:

彻底解决VScode中采用python import自定义模块显示unresolved import 问题 和 无法跳转到自定义模块函数定义_第1张图片

然后在项目的根目录新建文件.env(注意.开头的文件是隐藏的哦),在.env文件中添加要包涵自定义库的路径

PYTHONPATH=./my_module  

即可。注意这里写路径时,不需要双引号,另外可以发现需要写相对路径(经过测试,写绝对路径也是可以的),

我们可以猜测是相对于项目根目录的,可以发现在launch.json文件中,我们给env变量赋值了一个workspaceRoot

变量(应该就是项目根目录的意思)。然后再重启VScode(注意一定要重启生效),就可以发现之前的波浪线提示没了。

 

至此,大功告成呀! 而且,我还发现之前编辑器的自动跳转功能也可以正常使用了(^_^)!  其实想想,无法跳转到自定义

跟找不到module是同一个问题,因此也就好理解了。

 

最后,说一下为什么VScode有这么一个大坑。根据github issue中的讨论,VScode自会自动将根目录下的文件加入pythonpath

路径,而不会将子目录加入pythonpath中(坑啊)。这样就使得在项目根目录下再新建目录中的python模块无法被解析到!

 

希望能帮到广大的程序员们!(本来就忙的要死,还要为了这个小疙瘩花费这么多时间-_-!)

你可能感兴趣的:(visual,studio,code,github,python,linux)