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"},
特别注意
- 保存后原先打开的旧终端要删掉,否则不会生效
- 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