Python

包导入问题

问题背景

vscode 直接运行python程序,总是会莫名其妙的出现一些本来没有的导入错误。根源是相对路径带来的问题。
考虑到手动在代码中通过sys添加路径总是一个很不优雅且混乱的方式。
推荐通过修改vscode配置文件实现pythonpath管理,如下:

解决方案

修改配置文件
launch.json 用于调试

{
    // 使用 IntelliSense 了解相关属性。
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Python: Current File",
            "type": "python",
            "request": "launch",
            "program": "${file}",
            "console": "integratedTerminal",
            "env": {"PYTHONPATH": "${workspaceFolder}\\package_root${pathSeparator}${env:PYTHONPATH}"}
        }
    ]
}

setting.json 用于run

    "python.pythonPath": "C:\\Users\\User\\AppData\\Local\\Programs\\Python\\Python37\\python.exe",
    "terminal.integrated.shell.windows": "C:\\Windows\\System32\\cmd.exe",
    "terminal.integrated.env.windows": {"PYTHONPATH": "${workspaceFolder}\\package_root"},

特别注意

  1. 保存后原先打开的旧终端要删掉,否则不会生效
  2. terminal.integrated.env.**** 要注意区分平台,分别有linux osx windows

参考资料

How to correctly set PYTHONPATH for Visual Studio Code - Stack Overflow
VSCode 中的 Python 相对导入(修复 ModuleNotFoundError 和自动完成) | 康泽

显示vscode预定义变量值

在配置vscode时,通常使用一些预定义值,官方文档有解释含义 Visual Studio Code Variables Reference,但有时候想知道当前预定义值具体是什么,可以尝试下面链接,第一个回答的第二种方式。
typescript - How to display current values of VS Code’s predefined variables (such as “ w o r k s p a c e F o l d e r " o r " {workspaceFolder}" or " workspaceFolder"or"{fileWorkspaceFolder}”)? - Stack Overflow

07-22 11:34