Pylint “unresolved import” error in Visual Studio Code
我正在使用以下设置
- macOS v10.14(Mojave)
- 的Python 3.7.1
- Visual Studio代码1.30
- 皮林特2.2.2
- Django 2.1.4
我想使用棉绒使我的生活在Visual Studio Code中更加轻松。但是,对于每个导入,我都有"未解决的导入"状态。即使是默认的Django导入(即从django.db导入模型)。
我认为这是因为它没有看到虚拟环境Python文件。
一切正常,但开始变得烦人。
我拥有的解释器选择都是Python的所有系统版本。似乎根本看不到我的虚拟环境Python(它与我的工作空间不在同一个目录中,所以这很有意义)。
如果我在settings.json文件中设置了python.PythonPath,它只会忽略它,而不会列出我的虚拟环境路径作为选项。我也尝试在全局Python设置中进行设置,但它也没有显示。
有快速解决方案可以使其正常工作吗?
导入自己的模块时,可接受的答案无法解决错误。
在工作空间设置
1 | "python.autoComplete.extraPaths": ["./path-to-your-code"], |
参考:故障排除,未解决的导入警告
在工作区设置中,可以这样设置Python路径:
1 2 3 | { "python.pythonPath":"/path/to/your/venv/bin/python", } |
另一种方法:使用命令界面!
Cmd / Ctrl + Shift + P→Python:选择解释器→选择包含您要查找的软件包的软件包:
该问题已在GitHub上公开:
Python未解决的导入问题#3840
MagnuesBrzenk和Spe??nHouet有两个非常有用的答案。
目前最好的解决方案是在项目根文件夹中创建一个.env文件。然后像这样添加一个PYTHONPATH:
1 | PYTHONPATH=YOUR/MODULES/PATH |
并在您的settings.json中添加:
1 | "python.envFile":".env" |
如果您的
1 2 3 | { "python.jediEnabled": false } |
我可以通过在.vscode \ settings.json中启用jedi来解决此问题
1 | "python.jediEnabled": true |
来自https://github.com/Microsoft/vscode-python/issues/3840#issuecomment-456017675的参考
如果您像我一样更直观,则可以在菜单文件→首选项→设置(Ctrl + ,)中使用Visual Studio Code配置。转到扩展→Python。
在"分析:已禁用"部分中,添加以下消息的禁止显示:
当我做
参考:Python未解决的导入问题#3840,dkavraal的评论
您需要选择与虚拟环境关联的解释器。
单击此处(底部状态栏):
只需选择您正在使用的虚拟环境。做完了
有时,即使选择了口译员,它也不起作用。只需再次重复该过程即可解决。
除了这一解决方案,其他解决方案均无效。在settings.json中替换" Pylance"或" Microsoft"解决了我的问题。
1 | "python.languageServer":"Jedi" |
我想知道这个问题有(或没有)多少解决方案,我尝试了以上大多数方法,没有任何效果,唯一有效的解决方案是将python语言服务器设置为Jedi,而不是settings.json文件中的Microsoft:
1 | "python.languageServer":"Jedi" |
我的解决方案
此解决方案仅适用于当前项目。
在项目根目录中,创建文件夹
然后创建文件
在文件
1 2 3 | { "python.pythonPath":"/usr/local/bin/python3", } |
这是Python2的示例
1 2 3 | { "python.pythonPath":"/usr/local/bin/python", } |
如果您不知道Python安装的位置,只需在终端上运行命令
本示例适用于dockerized Python-Django。
对我来说,问题与我正在从事的项目有关。我花了一些时间才弄清楚,因此希望对您有所帮助:
原始文件夹结构:
1 2 3 4 5 6 7 8 9 10 | root/ __init__.py # Empty folder/ __init__.py # Empty sub_folder_b/ my_code.py sub_folder_c/ another_code.py |
在another_code.py中:
1 | from folder.sub_folder_b import my_code.py |
这没有触发Visual Studio Code中的智能感知,但确实执行了OK。
另一方面,在导入路径上添加" root"确实可以实现智能感知,但是在执行时引发了ModuleNotFoundError:
1 | from root.folder.sub_folder_b import my_code.py |
解决方案是删除"文件夹"目录中的_init_.py文件,仅保留
以前的答案都没有对我有用。但是,将以下两行添加到我的settings.json文件中。
1 2 3 4 | "python.analysis.disabled": [ "unresolved-import" ], "python.linting.pylintArgs": ["--load-plugin","pylint_protobuf"] |
第一行实际上只是隐藏了掉毛错误。当然不是永久性的解决方案,但会使屏幕杂乱无章。
这个答案给了我第二行:带有ProtoBuf编译的Python结构的VS Code PyLint错误E0602(未定义的变量)
也许比我更了解Python的人可以再解释一遍。
Shinebayar G的解决方案有效,但另一个解决方案则更为优雅:
从Python未解决的导入问题#3840复制:
给定以下示例项目结构:
-
workspaceRootFolder
- .vscode
- ...其他文件夹
- codeFolder
我为解决此问题所做的工作:
这对我有用:
打开命令面板(Ctrl + Shift + P),然后选择" Python:选择解释器"。
为此,您可以在Visual Studio Code中设置Python解释器。
改变中
Python:语言服务器
"杰迪"为我工作。
最初是" Windows"。
发生这种情况是因为Visual Studio Code将当前文件夹视为主文件夹,而不是考虑实际的主文件夹。
修复的快速方法是它提供主文件夹的解释器路径。
按Command + Shift + P(或在大多数其他系统上,按Ctrl + Shift + P)。
类型Python解释器
从可用选项中选择安装Python的路径。
我有一个不同的解决方案:我的Visual Studio Code实例选择了存储在
我将其更改为使用
我不知道在执行此操作时Visual Studio Code在后台执行的操作,也不知道为什么这导致了我的问题,但是对我来说,这是比编辑工作区设置稍微更简单的解决方案。
如果出现Pylint错误,请安装以下内容
1 | pipenv install pylint-django |
然后在根文件夹中创建一个文件.pylintrc,并编写以下内容
1 | load-plugins=pylint-django |
我已经通过Ctrl + Shift + P解决了导入错误。
键入"首选项设置",然后选择选项"首选项打开设置(JSON)"
并添加行
因此,JSON内容应类似于:
1 2 3 | { "python.pythonPath":"/usr/bin/" } |
保留其他配置行(如果存在)。
这应该导入您使用PIP安装的所有模块以实现自动完成。
就我而言,我已经激活了Conda环境,但是我仍然希望本地Python模块可用于自动完成,偷看定义等。
我尝试了许多解决方案,例如添加Python路径列表等,但最终为我解决的是创建从Conda
对我来说,如果我将python,pylint和autopep8的路径设置为本地环境路径,它就可以工作。
为您的工作区添加/更改此:
1 2 3 | "python.pythonPath":"...\\\\your_path\\\\.venv\\\\Scripts\\\\python.exe", "python.linting.pylintPath":"...\\\\your_path\\\\.venv\\\\Scripts\\\\pylint.exe", "python.formatting.autopep8Path":"...\\\\your_path\\\\.venv\\\\Scripts\\\\autopep8.exe", |
使用工作区保存并重新启动VS Code。
做完了!
我有一个库,尝试使用Jedi语言服务将其包含进来时会出错,并且在没有它的情况下也可以正常工作(即C#)。
该库是jsonslicer,它确实取决于我安装到
我在Conda环境中安装了Jedi服务和库,并在VisualStudio中使用了该环境。它在运行时和终端上都可以正常运行,但在检查源文件中的问题时却无法正常工作,并且显示为错误。
首先,请确保您已安装插件,但可能是工作区目录设置不正确。只需检查Pylint并编辑基础的settings.json文件。
1 2 3 4 | { "python.pythonPath":"/usr/local/bin/python3", "git.ignoreLimitWarning": true } |
安装代码运行器,并将以下代码添加到settings.json文件夹中:
1 2 3 | "code-runner.executorMap": { "python":"python3 -u", } |
" python":"(带有模块或其路径的Python可执行文件-u",
我已经通过三种方式面对了这个问题。尽管对于每个问题,答案中都可以找到解决方案,但我只是想将它们放在一起。
首先,在导入某些模块时出现了"未解决的导入",我注意到我的安装是在全局点而不是虚拟环境中进行的。
这个问题是由于Python解释器。您需要使用Shift + Ctrl + P在Visual Studio Code中选择解释器,然后键入
第二个问题是:上述更改没有完全解决我的问题。这次是因为文件settings.json。如果您的项目目录中没有settings.json文件,请创建一个文件并在其中添加以下行:
1 2 3 | { "python.pythonPath":"apis/bin/python" } |
基本上,这将告诉Visual Studio Code使用venv中的Python解释器。
第三个问题是在另一个程序中导入自定义Python模块或文件时。为此,您需要了解文件夹结构。由于venv中的Python位于bin中,因此您需要指定模块的文件夹(大多数情况下是应用程序文件夹)。在我的情况下是
1 | from app.models import setup_db |
严格来说,从models.py导入setup_db驻留在app文件夹中。
如果使用的是
例如 :
1 2 3 4 | { "python.pythonPath": "/Users/username/.local/share/virtualenvs/Your-Virual-Env/bin/python" } |
这会有所帮助。
我在使用venv,vscode 1.48.2的python 3.8.5中遇到相同的问题
我找到了解决方案。
在(环境文件夹)/ lib / site-packages中不包含软件包。
我使用此设置(.vscode / settings.json)
1 2 3 4 5 6 7 | { "python.autoComplete.extraPaths": [ "./**", ], "python.pythonPath":"env\\\\Scripts\\\\python.exe", "python.languageServer":"Microsoft" } |
如果有人碰巧和我一样谐趣,那么以下方法就可以了。
旧文件夹结构:
1 2 3 4 5 6 | awesome_code.py __init__.py src/ __init__.py stuff1.py stuff2.py |
新结构:
1 2 3 4 5 | awesome_code.py src/ __init__.py stuff1.py stuff2.py |
我的解决方案是在以前的目录中打开Visual Studio Code。
我用命令行python解决了这个问题。
我在项目路径中使用vs代码终端安装了模块,但是在Windows命令行python上导入模块时,由于未定义此模块,因此会引发错误
所以我从命令行安装了这些模块,问题解决了。