VSCode_bug记录-成功解决项目根目录的bug

VSCode_bug记录-成功解决项目根目录的bug

fanz Lv3

之前开发Python项目基本用的都是PyCharm,虽说PyCharm功能齐全,插件也很丰富,但是感觉太过笨重了,内存占用多,启动也慢,所以我渐渐地从PyCharm转向了VSCode。改成VSCode之后真的便捷了不少,用SSH连接服务器也非常方便。

不过上周遇到一个奇怪的问题,就是我本地正在使用VSCode运行一个带有前后端的python项目,当我在调试某个接口的时候我发现居然不会在接口代码位置中断!而且甚至我把这个接口的代码完全注释掉也可以正常运行?!

一开始我以为是前端使用了mock数据,可是想想也不对啊,就算是使用了mock数据,他也调用了接口,我后台代码注释掉之后应该是直接没有这个接口了才对,应该调用失败啊?😕

前前后后de了两天的bug,最后发现前端和后端的代码都没问题,真正的问题时在VSCode上🙂。。。(因为我换成PyCharm重新调试了一遍代码就好了)其实根本原因在于,Pycharm有 将当前目录标记为源码根 目录的功能,可是VSCode没有,然后调试python项目源码的时候发生了错误。

错误原因

image.png

原因就是我在调试dbgpt文件夹内的源码时,当前conda环境默认已经装了一个同名为dbgpt的包,当我调试的时候,conda环境中的python没有进入当前目录的这个dbgpt,而是去调用了Lib/site-packages中的dbgpt包,这就导致我怎么修改当前文件夹的代码都是无效的,它调用的始终都是自己的package。

解决方案

Note

这个源码根目录的选取是非常重要的!!千万不要选错了!!

比如我当前使用的工程路径是D:/VSCode/VSCode_Work/xxx/MyTest,且工程目录结构是这样的:

image.png

那么现在我肯定是想把base和ultra都标记为根目录的,但是注意,其实这里应该使用的是D:/VSCode/VSCode_Work/xxx/MyTest,因为如果直接标记的时base或者ultra,那么就找不到base和ultra本身了,那么直接from base import Base就会爆出no module named base的错误!!

在网上看了很多博客,有说改launch.json的,有说改setting.json的,目前我测试可用的解决方法有两种:

(1)在运行的python文件首部添加代码

1
2
import sys
sys.path.insert(0,'源码根目录')

这种方式是有效的,但是太繁琐了,这样对于每个运行的py代码都需要添加这段代码

(2)修改settings.json和.env

在项目根目录下创建一个.env文件,在这个.env文件中写入这一行:

❕ Windows系统

windows系统中,不同根目录的分隔符为分号;而且文件路径的斜杠默认是右斜杠’',请修改为左斜杠’/'。

1
2
# 设置根目录
PYTHONPATH= 源码根目录1;源码根目录2;源码根目录3

❕ Linux系统

Linux系统中,默认的分隔符是冒号:

1
2
# 设置根目录
PYTHONPATH= 源码根目录1:源码根目录2:源码根目录3
Tip

源码根目录末尾的最好保留’/',比如写成D:/VSCode/VSCode_Work/Python01/project01/

之后可以在Preference中搜索python.envFile,如果已经显示定义好了env文件的路径,那么直接就可以运行了。
image.png

如果说这里没有设置,可以直接在设置中修改,也可以在.vscode中添加settings.json文件,在settings.json文件中写入如下信息:

1
2
3
{
"python.envFile": "${workspaceFolder}/.env",
}

这样的话,无论是直接运行还是调试模式,都可以正常运行项目了😁。

Tips:如果直接在终端执行呢?

其实从上面的解决方案可以看出来,出错误的根本原因其实就是 PYTHONPATH 这个环境变量,刚才我们配置.env 文件还有 settings.json 文件确实是能解决在VSCode中启动项目的问题,不过如果想直接使用命令行在终端启动这个项目,上述的操作就又会不起作用了。

所以,如果能够在终端设置好这个PYTHONPATH之后在启动项目就行了,命令行如下:

1
2
export PYTHONPATH=...路径
python ./xx.py(启动文件)

注意:此方法只在当前命令窗口生效,即如果打开一个新的Terminal 窗口,就需要重新执行一下export命令。

  • 标题: VSCode_bug记录-成功解决项目根目录的bug
  • 作者: fanz
  • 创建于 : 2024-12-25 11:03:28
  • 更新于 : 2025-02-17 22:48:42
  • 链接: https://redefine.ohevan.com/sp14hs/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。