VSCode中Django 2.0.5虚拟环境下E0611导入警告求助
这个问题我之前帮好几个开发者处理过,其实核心原因就是VSCode的代码检查工具(linter)没正确识别你的虚拟环境配置——虽然Django服务器运行正常、页面内容也没问题,但linter没找到虚拟环境里的Django库,所以误报了E0611:No name 'path' in module 'django.urls'。下面是几个靠谱的解决办法,按顺序试就行:
第一步:确认VSCode使用虚拟环境的Python解释器
打开VSCode的命令面板(快捷键Ctrl+Shift+P),输入Python: Select Interpreter,然后选择你创建的虚拟环境里的Python执行文件(比如Windows下是venv/Scripts/python.exe,Mac/Linux下是venv/bin/python)。选完之后,VSCode会自动更新语言服务的依赖路径。第二步:重载VSCode窗口
有时候配置更新后缓存没及时刷新,再打开命令面板输入Reload Window,重启一下VSCode的窗口,很多时候误报就会消失。第三步:安装并配置pylint-django插件
默认的pylint对Django的语法支持不太友好,针对Django项目建议安装pylint-django插件。在虚拟环境里执行命令:pip install pylint-django然后打开VSCode的设置(快捷键Ctrl+,),搜索
python.linting.pylintArgs,添加如下配置:"python.linting.pylintArgs": ["--load-plugins=pylint_django"]这个插件会让pylint正确识别Django特有的语法和模块结构。
第四步:手动指定Django库路径(如果以上都不行)
如果还是有问题,可以手动把虚拟环境里的Django包路径添加到VSCode的分析路径中。打开settings.json(可以通过命令面板输入Preferences: Open Settings (JSON)打开),添加:"python.analysis.extraPaths": [ "./venv/lib/python3.7/site-packages" // 替换成你虚拟环境对应的Python版本路径 ]这样VSCode的语言服务就能直接找到Django的源码,不会再误报模块不存在。
内容的提问来源于stack exchange,提问作者Victor Zlatin

