在 VSCode 中自定义 Python 导包解析目录,避免智能补全失效

239 阅读1分钟

例如 my-project 的 Python 项目的目录结构长这样:

my-project/
└── src
    └── main_folder
        ├── main.py
        └── something.py

执行 main.py 代码,则使用命令 python src/myproject/main.py

问题是,如果在 main.py 中写上:

import something

VSCode 会说找不到包,解析不了。但是 python src/myproject/main.py 是可以正常运行的。于是强迫症犯了。

若把 import something 改写为 from src.main_folder import something 虽然让 VSCode 找得到包,但不太符合直觉——我更希望把 main_folder 视为主目录,而且这样一来 python src/myproject/main.py 命令就会出错了。

其实很好解决。在项目根目录创建 .vscode 文件夹,里面 写一个 setting.json:

{
    "python.analysis.extraPaths": [
        "./src/main_folder"
    ]
}

现在的目录结构会是这个样子:

my-project/
├── .vscode
│   └── setting.json
└── src
    └── main_folder
        ├── main.py
        └── something.py

设置好后可以发现,VSCode 能找到包了。