Visual Studio 代码中的 Pylint "unresolved import" 错误
Pylint "unresolved import" error in Visual Studio Code
我正在使用以下设置
- macOS v10.14(莫哈韦沙漠)
- Python 3.7.1
- Visual Studio代码1.30
- Pylint 2.2.2
- Django 2.1.4
我想在 Visual Studio 代码中使用 linting 让我的生活更轻松一些。但是,对于每次导入,我都声明“未解决的导入”。即使是默认的 Django 导入(即来自 django.db 导入模型)。
我想这是因为它没有看到虚拟环境 Python 文件。
一切正常,但开始变得烦人。
我选择的解释器都是Python的系统版本。它似乎根本看不到我的虚拟环境 Python(它与我的工作区不在同一个目录中,所以这部分很有意义)。
如果我在 settings.json 文件中设置 python.PythonPath,它会忽略它并执行不要将我的虚拟环境路径列为选项。我也尝试在我的全局 Python 设置中设置它,但它也没有显示。
是否有快速解决方法使其正常工作?
在您的 workspace settings 中,您可以像这样设置 Python 路径:
{
"python.defaultInterpreterPath": "/path/to/your/venv/bin/python",
}
如果您的 settings.json
文件中有此代码,请将其删除:
{
"python.jediEnabled": false
}
此问题已在 GitHub 上打开:
Python unresolved import issue #3840
MagnuesBrzenk 和 SpenHouet 提供了两个非常有用的答案。
目前最好的解决方案是在项目根文件夹中创建一个 .env 文件。然后像这样向其中添加一个 PYTHONPATH:
PYTHONPATH=YOUR/MODULES/PATH
并在您的 settings.json 中添加:
"python.envFile": ".env"
我有一个不同的解决方案:我的 Visual Studio 代码实例已经获取了存储在 .venv
中的 virtualenv,但它使用了错误的 Python 二进制文件。它正在使用 .venv/bin/python3.7
;使用蓝色状态栏中的切换器。
我将其更改为使用 .venv/bin/python
,并且我的所有导入都已正确解析。
我不知道 Visual Studio 当我这样做时代码在幕后做了什么,我也不明白为什么这会导致我的问题,但对我来说这是一个比编辑我的代码更简单的解决方案工作区设置。
当我 > reload window
修复它时。
替代方法:使用命令界面!
Cmd/Ctrl + Shift + P → Python: Select Interpreter → 选择你要找的包:
我能够通过在 .vscode\settings.json
中启用 jedi 来解决这个问题
"python.jediEnabled": true
引用自https://github.com/Microsoft/vscode-python/issues/3840#issuecomment-456017675
接受的答案不会修复导入自己的模块时的错误。
在您的工作区设置中使用以下设置 .vscode/settings.json
:
"python.autoComplete.extraPaths": ["./path-to-your-code"],
None 之前的答案对我有用。但是,将以下两行添加到我的 settings.json 文件中。
"python.analysis.disabled": [
"unresolved-import"
],
"python.linting.pylintArgs": ["--load-plugin","pylint_protobuf"]
第一行实际上只是隐藏了 linting 错误。当然不是永久性的解决方案,但可以消除屏幕上的混乱。
这个答案给了我第二行:
也许比我更懂 Python 的人可以再解释一下。
如果出现 Pylint 错误,请安装以下内容
pipenv install pylint-django
然后在根文件夹中创建一个文件.pylintrc,并写入以下内容
load-plugins=pylint-django
这对我有用:
打开命令面板(Ctrl + Shift + P)并选择“Python: Select 口译员".
执行此操作,您在 Visual Studio 代码中设置 Python 解释器。
我的解决方案
此解决方案仅适用于当前项目。
在项目根目录下,创建文件夹.vscode
然后创建文件.vscode/settings.json
在文件 setting.json
中,添加行(这是用于 Python 3)
{
"python.pythonPath": "/usr/local/bin/python3",
}
这是 Python2
的示例
{
"python.pythonPath": "/usr/local/bin/python",
}
如果您不知道 Python 安装位置,只需 运行 在终端上输入命令 which python
或 which python3
。它将打印 Python 位置。
此示例适用于 dockerized Python - Django。
我已经通过 Ctrl + Shift + P 解决了导入错误。
键入“首选项设置”和 select 选项 首选项打开设置 (JSON)
并添加行 "python.pythonPath": "/usr/bin/"
因此 JSON 内容应如下所示:
{
"python.pythonPath": "/usr/bin/"
}
保留其他配置行(如果存在)。
这应该导入您使用 PIP 自动完成安装的所有模块。
有效,但另一个更优雅:
复制自Python unresolved import issue #3840:
给定以下示例项目结构:
- workspaceRootFolder
- .vscode
- ...其他文件夹
- 代码文件夹
我为解决此问题所做的工作:
- 进入工作区文件夹(此处为 workspaceRootFolder)并创建一个 .env 文件
- 在这个空的 .env 文件中,添加行 PYTHONPATH=codeFolder(将 codeFolder 替换为您的文件夹名称)
- 添加 "python.envFile": "${workspaceFolder}/.env" 到 settings.json
- 重启Visual Studio代码
我的解决方案是打开上一个目录中的 Visual Studio 代码。
在我的例子中,我已经激活了一个 Conda 环境,但我仍然希望本地 Python 模块可用于自动完成、查看定义等。
我尝试了很多解决方案,例如添加 Python 路径列表等,但最终为我解决的是从 Conda 的 lib/python{your version}/site-packages
到我的创建符号 link本地模块。
如果你像我一样比较视觉化,可以使用菜单文件中的Visual Studio代码配置→首选项→ 设置 (Ctrl + ,)。转到 扩展程序 → Python.
在 Analysis: Disabled 部分中,添加对以下消息的抑制:unresolved-import
:
对我来说,问题与我正在进行的项目有关。我花了一段时间才弄明白,所以我希望这对你有所帮助:
原始文件夹结构:
root/
__init__.py # Empty
folder/
__init__.py # Empty
sub_folder_b/
my_code.py
sub_folder_c/
another_code.py
在another_code.py中:
from folder.sub_folder_b import my_code.py
这没有触发 Visual Studio 代码中的智能感知,但确实执行正常。
另一方面,在导入路径中添加“root”确实使智能感知工作,但在执行时引发了 ModuleNotFoundError:
from root.folder.sub_folder_b import my_code.py
解决方法是把“folder”目录下的_init_.py文件去掉,只留下_init_.py 位于 /root
.
您需要select与虚拟环境关联的解释器。
点击这里(底部状态栏):
并且只是 select 您正在使用的虚拟环境。完成。
有时,即使使用解释器 selected,也无法正常工作。再重复一遍这个过程应该就可以解决了。
我有一个库在尝试使用 Jedi 语言服务包含它时出错,但没有它也能正常工作(即 C# 库)。
该库是 jsonslicer,它确实依赖于我安装到 /usr/local/lib
中的外部 C 库。这可能与它有关吗?
我在 Conda 环境中安装了 Jedi 服务和库,并在 Visual Studio 中使用了该环境。它在运行时和我的终端中工作正常,但在检查我的源文件中的问题时却没有,它显示为错误。
首先确保你已经安装了插件,但可能是工作区目录设置不正确。只需检查 Pylint 并编辑底层 settings.json 文件。
{
"python.pythonPath": "/usr/local/bin/python3",
"git.ignoreLimitWarning": true
}
安装 code-runner 并在 settings.json 文件夹中添加以下代码:
"code-runner.executorMap": {
"python": "python3 -u",
}
"python": "(带有模块或其路径的 Python 可执行文件) -u",
发生这种情况是因为 Visual Studio 代码将您的当前文件夹视为主文件夹,而不是考虑实际的主文件夹。
快速修复的方法是提供主文件夹的解释器路径。
按Command + Shift + P(或Ctrl + Shift + P 在大多数其他系统上)。
类型Python解释器
Select 您在可用选项中安装 Python 的路径。
我曾以三种方式面对过这个问题。虽然在这个问题的答案中每个人都有一个解决方案,但我只是想把它们放在一起。
首先我在导入一些模块时收到“未解决的导入”,我注意到我的安装是在全局 pip 而不是虚拟环境中进行的。
这个问题是因为 Python 解释器。您需要 select Visual Studio 代码中的解释器使用 Shift + Ctrl + P 然后键入 Select Python Interpreter
。 Select 你的 venv 口译员在这里。
第二个问题是:上面的改动并没有完全解决我的问题。这次是因为文件settings.json。如果您的项目目录中没有 settings.json 文件,请创建一个并在其中添加以下行:
{
"python.pythonPath": "apis/bin/python"
}
这基本上会告诉 Visual Studio 使用您的 venv 中的 Python 解释器的代码。
第三个问题是在另一个程序中导入自定义 Python 模块或文件时。为此,您需要了解文件夹结构。由于 venv 中的 Python 位于 bin 中,因此您需要指定模块的文件夹(大多数情况下是应用程序文件夹)。在我的例子中是 app
,
from app.models import setup_db
口头上,import setup_db from models.py 驻留在 app 文件夹中。
我想知道这个问题有多少解决方案(或没有),我尝试了上面的大部分,没有任何效果,唯一有效的解决方案是将 python 语言服务器设置为 Jedi,而不是Microsoft 在 settings.json 文件中:
"python.languageServer": "Jedi"
如果您使用的是 pipenv
,那么您需要指定虚拟 environment.in settings.json
文件的路径。
例如:
{
"python.pythonPath":
"/Users/username/.local/share/virtualenvs/Your-Virual-Env/bin/python"
}
这会有所帮助。
None 个解决方案有效,但这个除外。在 settings.json 中替换“Pylance”或“Microsoft”解决了我的问题。
"python.languageServer": "Jedi"
我在 python 3.8.5 使用 venv,vscode 1.48.2 时遇到同样的问题
我找到了我的解决方案。
在(env 文件夹)/lib/site-packages 中不包含包。
我使用这个设置 (.vscode/settings.json)
{
"python.autoComplete.extraPaths": [
"./**",
],
"python.pythonPath": "env\Scripts\python.exe",
"python.languageServer": "Microsoft"
}
改变
Python:Language 服务器
'Jedi' 对我有用。
最初是 'Windows'。
如果有人碰巧像我一样白痴,下面的方法就奏效了。
旧文件夹结构:
awesome_code.py
__init__.py
src/
__init__.py
stuff1.py
stuff2.py
新结构:
awesome_code.py
src/
__init__.py
stuff1.py
stuff2.py
我用 command-line python 解决了这个问题。
我在项目路径中安装了带有 vs 代码终端的模块,但是当在 windows 命令行 python 上导入模块时,会抛出错误,因为此模块未定义
所以我从命令行安装了这些模块,我的问题就解决了。
对我来说,它有效,如果我将 python、pylint 和 autopep8 的路径设置为本地环境路径。
对于你的工作区add/change这个:
"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 with workspace。
完成!
How to avoid warning
请注意,这只是跳过警告并没有解决它。
首先在json中打开visual studio代码设置,在"[python]":{}
后添加如下参数
"python.linting.pylintArgs": ["--rep[![enter image description here][1]][1]orts", "12", "--disable", "I0011"],
"python.linting.flake8Args": ["--ignore=E24,W504", "--verbose"]
"python.linting.pydocstyleArgs": ["--ignore=D400", "--ignore=D4"]
这帮助我避免了 VSCode 中的 pylint 警告。
我在导入项目相关(非标准)模块时遇到了同样的问题。
问题详细解释
目录结构:
Project_dir:
.vscode/settings.json
dir_1
> a
> b
> c
dir_2
> x
> y
> z
我们想要的:
Project_dir
dir_3
import a
import y
此处“import a”和“import y”失败,出现以下错误:
Import "dir_1.a" could not be resolvedPylancereportMissingImports
Import "dir_2.y" could not be resolvedPylancereportMissingImports
对我有用的:
附加包含要导入的模块的顶级目录。
在上面的示例中,在“.vscode/settings.json”中添加以下“要附加的代码”
文件名:
.vscode/settings.json
要附加的代码:
"python.analysis.extraPaths": [dir_1, dir_2]
None 这里的答案为我解决了这个错误。代码会 运行,但我无法直接跳转到函数定义。它仅适用于某些本地包裹。一方面,python.jediEnabled
不再是一个有效的选项。我做了两件事,但我不确定第一件事是否必要:
- 下载 Pylance 扩展,将
python.languageServer
更改为“Pylance”
- 添加
"python.analysis.extraPaths": [ "path_to/src_file" ]
显然会检查 root 和 src
是否有本地包,但必须在此处添加其他包。
康达环境
pylint error: "Unable to import 'django.X'"
在您的 conda 环境中激活所需的 Python 解释器后,VS Code 有时会继续使用默认 conda 环境中的 pylint。例如:
/home/<username>/anaconda3/bin/pylint
1。在目标 conda 环境中安装 pylint
$ conda activate <target environment>
$ conda install pylint
2。更新 VS 代码设置
- 在 VS Code 设置 中,搜索“pylint 路径”
- 单击 Workspace 选项卡(而不是默认的 User)
- 在“扩展程序 (##)”下,单击“Python (#)”
- 向下滚动到 Python > Linting:Pylint 路径
- 输入指向刚刚安装的pylint副本的pylint路径,例如:
/home/<username>/anaconda3/envs/<target environment>/bin/pylint
根据您的系统配置替换<username>
和<target environment>
。
现在pylint会找到安装的库,包括Django,假设<目标环境>中已经安装了Django。
3。安装 Django pylint 插件
$ conda install pylint-django
更新 VS 代码设置以使用插件:
- 搜索“pylint args”的 VS Code 设置
- 在 Python > Linting:Pylint Args 下,单击“添加项目”
- 输入:
--load-plugins=pylint_django
- 点击“确定”
- 点击“添加项目”
- 输入:
--django-settings-module=<PROJECT FOLDER>.settings
- 将
<PROJECT FOLDER>
替换为包含“settings.py”Django 配置文件的文件夹。
- 点击“确定”
- 重启 VS Code
我正在使用以下设置:(2021 年 4 月)
- macOS 大苏尔
- vscode
- Anaconda 3(针对环境)
我在启动 Django 时遇到了这个错误。
所以,我按照这些步骤操作并解决了这个错误。
这些屏幕截图中给出了步骤:
打开设置(工作区)
按照这个截图打开Python路径
现在,点击Edit in settings.json
按照此屏幕截图中给出的路径创建路径 /opt/anaconda3/bin/python
5。现在,保存这个 settings.json 文件。
6.重启vscode
此外,intellisense 可能会在一段时间内无法工作,请等待一段时间,然后重新启动,然后 vscode 读取新路径的文件。
我遇到了我创建的模块导入找不到的问题。我觉得我尝试了很多方法来确保 python 解释器选择是正确的,但都无济于事。我通过编辑 settings.json Python>Linting>Pylint Args 并添加 init-hook...
找到了对我有用的答案
--init-hook="from pylint.config import find_pylintrc; import os, sys; sys.path.append(os.path.dirname(find_pylintrc()))"
此解决方案是在 PyLint "Unable to import" error - how to set PYTHONPATH? 中找到的。我没有创建和编辑 pylintrc,而是使用 VS Code GUI 添加了上面的内容。
我似乎遇到了这个问题,因为 django 安装在我的基本虚拟环境中,而不是我实际用于该项目的环境。这基本上导致它工作,但显示错误并且不能正确自动完成。
修复我只是
- 打开 Anaconda Navigator
- 单击左侧菜单中的环境
- Select您为项目使用的虚拟环境
- 在虚拟环境中,单击绿色三角形(加载后),然后 select 'Open Terminal'
- 运行 'pip install django'
完成此操作后,您可以返回 VS Code 并将 python 环境切换到基础,然后返回到 VS Code 左下角的所需环境。
错误应该会消失,自动完成应该会起作用。
好的,2 年后我 运行 遇到了这个烦人的问题。我在这里看到的只是一些非常复杂的解决方法。对于以后可能 运行 参与此操作的其他人来说,以下是简单易行的步骤:
- 在 VS Code 的底部,您会看到列出的 Python 版本,只需单击此处
- Select翻译windows即将出场
- 点击第一个选项“Select Interpreter Path”并导航到包含您的虚拟环境
的文件夹路径
这就是您需要做的所有事情,并避免在 VS Code 中调整这些设置,如果不小心处理,这些设置可能会变得非常复杂。
在子目录中导入模块,在.vscode/settings.json中添加如下设置:
"python.analysis.extraPaths": [
"./directory_name"
]
我正在使用以下设置
- macOS v10.14(莫哈韦沙漠)
- Python 3.7.1
- Visual Studio代码1.30
- Pylint 2.2.2
- Django 2.1.4
我想在 Visual Studio 代码中使用 linting 让我的生活更轻松一些。但是,对于每次导入,我都声明“未解决的导入”。即使是默认的 Django 导入(即来自 django.db 导入模型)。
我想这是因为它没有看到虚拟环境 Python 文件。
一切正常,但开始变得烦人。
我选择的解释器都是Python的系统版本。它似乎根本看不到我的虚拟环境 Python(它与我的工作区不在同一个目录中,所以这部分很有意义)。
如果我在 settings.json 文件中设置 python.PythonPath,它会忽略它并执行不要将我的虚拟环境路径列为选项。我也尝试在我的全局 Python 设置中设置它,但它也没有显示。
是否有快速解决方法使其正常工作?
在您的 workspace settings 中,您可以像这样设置 Python 路径:
{
"python.defaultInterpreterPath": "/path/to/your/venv/bin/python",
}
如果您的 settings.json
文件中有此代码,请将其删除:
{
"python.jediEnabled": false
}
此问题已在 GitHub 上打开:
Python unresolved import issue #3840
MagnuesBrzenk 和 SpenHouet 提供了两个非常有用的答案。
目前最好的解决方案是在项目根文件夹中创建一个 .env 文件。然后像这样向其中添加一个 PYTHONPATH:
PYTHONPATH=YOUR/MODULES/PATH
并在您的 settings.json 中添加:
"python.envFile": ".env"
我有一个不同的解决方案:我的 Visual Studio 代码实例已经获取了存储在 .venv
中的 virtualenv,但它使用了错误的 Python 二进制文件。它正在使用 .venv/bin/python3.7
;使用蓝色状态栏中的切换器。
我将其更改为使用 .venv/bin/python
,并且我的所有导入都已正确解析。
我不知道 Visual Studio 当我这样做时代码在幕后做了什么,我也不明白为什么这会导致我的问题,但对我来说这是一个比编辑我的代码更简单的解决方案工作区设置。
当我 > reload window
修复它时。
替代方法:使用命令界面!
Cmd/Ctrl + Shift + P → Python: Select Interpreter → 选择你要找的包:
我能够通过在 .vscode\settings.json
中启用 jedi 来解决这个问题"python.jediEnabled": true
引用自https://github.com/Microsoft/vscode-python/issues/3840#issuecomment-456017675
接受的答案不会修复导入自己的模块时的错误。
在您的工作区设置中使用以下设置 .vscode/settings.json
:
"python.autoComplete.extraPaths": ["./path-to-your-code"],
None 之前的答案对我有用。但是,将以下两行添加到我的 settings.json 文件中。
"python.analysis.disabled": [
"unresolved-import"
],
"python.linting.pylintArgs": ["--load-plugin","pylint_protobuf"]
第一行实际上只是隐藏了 linting 错误。当然不是永久性的解决方案,但可以消除屏幕上的混乱。
这个答案给了我第二行:
也许比我更懂 Python 的人可以再解释一下。
如果出现 Pylint 错误,请安装以下内容
pipenv install pylint-django
然后在根文件夹中创建一个文件.pylintrc,并写入以下内容
load-plugins=pylint-django
这对我有用:
打开命令面板(Ctrl + Shift + P)并选择“Python: Select 口译员".
执行此操作,您在 Visual Studio 代码中设置 Python 解释器。
我的解决方案
此解决方案仅适用于当前项目。
在项目根目录下,创建文件夹
.vscode
然后创建文件
.vscode/settings.json
在文件
setting.json
中,添加行(这是用于 Python 3){ "python.pythonPath": "/usr/local/bin/python3", }
这是 Python2
的示例{ "python.pythonPath": "/usr/local/bin/python", }
如果您不知道 Python 安装位置,只需 运行 在终端上输入命令
which python
或which python3
。它将打印 Python 位置。此示例适用于 dockerized Python - Django。
我已经通过 Ctrl + Shift + P 解决了导入错误。 键入“首选项设置”和 select 选项 首选项打开设置 (JSON)
并添加行 "python.pythonPath": "/usr/bin/"
因此 JSON 内容应如下所示:
{
"python.pythonPath": "/usr/bin/"
}
保留其他配置行(如果存在)。 这应该导入您使用 PIP 自动完成安装的所有模块。
复制自Python unresolved import issue #3840:
给定以下示例项目结构:
- workspaceRootFolder
- .vscode
- ...其他文件夹
- 代码文件夹
我为解决此问题所做的工作:
- 进入工作区文件夹(此处为 workspaceRootFolder)并创建一个 .env 文件
- 在这个空的 .env 文件中,添加行 PYTHONPATH=codeFolder(将 codeFolder 替换为您的文件夹名称)
- 添加 "python.envFile": "${workspaceFolder}/.env" 到 settings.json
- 重启Visual Studio代码
我的解决方案是打开上一个目录中的 Visual Studio 代码。
在我的例子中,我已经激活了一个 Conda 环境,但我仍然希望本地 Python 模块可用于自动完成、查看定义等。
我尝试了很多解决方案,例如添加 Python 路径列表等,但最终为我解决的是从 Conda 的 lib/python{your version}/site-packages
到我的创建符号 link本地模块。
如果你像我一样比较视觉化,可以使用菜单文件中的Visual Studio代码配置→首选项→ 设置 (Ctrl + ,)。转到 扩展程序 → Python.
在 Analysis: Disabled 部分中,添加对以下消息的抑制:unresolved-import
:
对我来说,问题与我正在进行的项目有关。我花了一段时间才弄明白,所以我希望这对你有所帮助:
原始文件夹结构:
root/
__init__.py # Empty
folder/
__init__.py # Empty
sub_folder_b/
my_code.py
sub_folder_c/
another_code.py
在another_code.py中:
from folder.sub_folder_b import my_code.py
这没有触发 Visual Studio 代码中的智能感知,但确实执行正常。
另一方面,在导入路径中添加“root”确实使智能感知工作,但在执行时引发了 ModuleNotFoundError:
from root.folder.sub_folder_b import my_code.py
解决方法是把“folder”目录下的_init_.py文件去掉,只留下_init_.py 位于 /root
.
您需要select与虚拟环境关联的解释器。
点击这里(底部状态栏):
并且只是 select 您正在使用的虚拟环境。完成。
有时,即使使用解释器 selected,也无法正常工作。再重复一遍这个过程应该就可以解决了。
我有一个库在尝试使用 Jedi 语言服务包含它时出错,但没有它也能正常工作(即 C# 库)。
该库是 jsonslicer,它确实依赖于我安装到 /usr/local/lib
中的外部 C 库。这可能与它有关吗?
我在 Conda 环境中安装了 Jedi 服务和库,并在 Visual Studio 中使用了该环境。它在运行时和我的终端中工作正常,但在检查我的源文件中的问题时却没有,它显示为错误。
首先确保你已经安装了插件,但可能是工作区目录设置不正确。只需检查 Pylint 并编辑底层 settings.json 文件。
{
"python.pythonPath": "/usr/local/bin/python3",
"git.ignoreLimitWarning": true
}
安装 code-runner 并在 settings.json 文件夹中添加以下代码:
"code-runner.executorMap": {
"python": "python3 -u",
}
"python": "(带有模块或其路径的 Python 可执行文件) -u",
发生这种情况是因为 Visual Studio 代码将您的当前文件夹视为主文件夹,而不是考虑实际的主文件夹。
快速修复的方法是提供主文件夹的解释器路径。
按Command + Shift + P(或Ctrl + Shift + P 在大多数其他系统上)。
类型Python解释器
Select 您在可用选项中安装 Python 的路径。
我曾以三种方式面对过这个问题。虽然在这个问题的答案中每个人都有一个解决方案,但我只是想把它们放在一起。
首先我在导入一些模块时收到“未解决的导入”,我注意到我的安装是在全局 pip 而不是虚拟环境中进行的。
这个问题是因为 Python 解释器。您需要 select Visual Studio 代码中的解释器使用 Shift + Ctrl + P 然后键入
Select Python Interpreter
。 Select 你的 venv 口译员在这里。第二个问题是:上面的改动并没有完全解决我的问题。这次是因为文件settings.json。如果您的项目目录中没有 settings.json 文件,请创建一个并在其中添加以下行:
{ "python.pythonPath": "apis/bin/python" }
这基本上会告诉 Visual Studio 使用您的 venv 中的 Python 解释器的代码。
第三个问题是在另一个程序中导入自定义 Python 模块或文件时。为此,您需要了解文件夹结构。由于 venv 中的 Python 位于 bin 中,因此您需要指定模块的文件夹(大多数情况下是应用程序文件夹)。在我的例子中是
app
,from app.models import setup_db
口头上,import setup_db from models.py 驻留在 app 文件夹中。
我想知道这个问题有多少解决方案(或没有),我尝试了上面的大部分,没有任何效果,唯一有效的解决方案是将 python 语言服务器设置为 Jedi,而不是Microsoft 在 settings.json 文件中:
"python.languageServer": "Jedi"
如果您使用的是 pipenv
,那么您需要指定虚拟 environment.in settings.json
文件的路径。
例如:
{
"python.pythonPath":
"/Users/username/.local/share/virtualenvs/Your-Virual-Env/bin/python"
}
这会有所帮助。
None 个解决方案有效,但这个除外。在 settings.json 中替换“Pylance”或“Microsoft”解决了我的问题。
"python.languageServer": "Jedi"
我在 python 3.8.5 使用 venv,vscode 1.48.2 时遇到同样的问题 我找到了我的解决方案。 在(env 文件夹)/lib/site-packages 中不包含包。 我使用这个设置 (.vscode/settings.json)
{
"python.autoComplete.extraPaths": [
"./**",
],
"python.pythonPath": "env\Scripts\python.exe",
"python.languageServer": "Microsoft"
}
改变 Python:Language 服务器 'Jedi' 对我有用。 最初是 'Windows'。
如果有人碰巧像我一样白痴,下面的方法就奏效了。
旧文件夹结构:
awesome_code.py
__init__.py
src/
__init__.py
stuff1.py
stuff2.py
新结构:
awesome_code.py
src/
__init__.py
stuff1.py
stuff2.py
我用 command-line python 解决了这个问题。 我在项目路径中安装了带有 vs 代码终端的模块,但是当在 windows 命令行 python 上导入模块时,会抛出错误,因为此模块未定义 所以我从命令行安装了这些模块,我的问题就解决了。
对我来说,它有效,如果我将 python、pylint 和 autopep8 的路径设置为本地环境路径。
对于你的工作区add/change这个:
"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 with workspace。 完成!
How to avoid warning
请注意,这只是跳过警告并没有解决它。
首先在json中打开visual studio代码设置,在"[python]":{}
"python.linting.pylintArgs": ["--rep[![enter image description here][1]][1]orts", "12", "--disable", "I0011"], "python.linting.flake8Args": ["--ignore=E24,W504", "--verbose"] "python.linting.pydocstyleArgs": ["--ignore=D400", "--ignore=D4"]
这帮助我避免了 VSCode 中的 pylint 警告。
我在导入项目相关(非标准)模块时遇到了同样的问题。 问题详细解释
目录结构:
Project_dir:
.vscode/settings.json
dir_1
> a
> b
> c
dir_2
> x
> y
> z
我们想要的:
Project_dir
dir_3
import a
import y
此处“import a”和“import y”失败,出现以下错误:
Import "dir_1.a" could not be resolvedPylancereportMissingImports
Import "dir_2.y" could not be resolvedPylancereportMissingImports
对我有用的:
附加包含要导入的模块的顶级目录。
在上面的示例中,在“.vscode/settings.json”中添加以下“要附加的代码”
文件名:
.vscode/settings.json
要附加的代码:
"python.analysis.extraPaths": [dir_1, dir_2]
None 这里的答案为我解决了这个错误。代码会 运行,但我无法直接跳转到函数定义。它仅适用于某些本地包裹。一方面,python.jediEnabled
不再是一个有效的选项。我做了两件事,但我不确定第一件事是否必要:
- 下载 Pylance 扩展,将
python.languageServer
更改为“Pylance” - 添加
"python.analysis.extraPaths": [ "path_to/src_file" ]
显然会检查 root 和 src
是否有本地包,但必须在此处添加其他包。
康达环境
pylint error: "Unable to import 'django.X'"
在您的 conda 环境中激活所需的 Python 解释器后,VS Code 有时会继续使用默认 conda 环境中的 pylint。例如:
/home/<username>/anaconda3/bin/pylint
1。在目标 conda 环境中安装 pylint
$ conda activate <target environment>
$ conda install pylint
2。更新 VS 代码设置
- 在 VS Code 设置 中,搜索“pylint 路径”
- 单击 Workspace 选项卡(而不是默认的 User)
- 在“扩展程序 (##)”下,单击“Python (#)”
- 向下滚动到 Python > Linting:Pylint 路径
- 输入指向刚刚安装的pylint副本的pylint路径,例如:
/home/<username>/anaconda3/envs/<target environment>/bin/pylint
根据您的系统配置替换<username>
和<target environment>
。
现在pylint会找到安装的库,包括Django,假设<目标环境>中已经安装了Django。
3。安装 Django pylint 插件
$ conda install pylint-django
更新 VS 代码设置以使用插件:
- 搜索“pylint args”的 VS Code 设置
- 在 Python > Linting:Pylint Args 下,单击“添加项目”
- 输入:
--load-plugins=pylint_django
- 点击“确定”
- 点击“添加项目”
- 输入:
--django-settings-module=<PROJECT FOLDER>.settings
- 将
<PROJECT FOLDER>
替换为包含“settings.py”Django 配置文件的文件夹。
- 将
- 点击“确定”
- 重启 VS Code
我正在使用以下设置:(2021 年 4 月)
- macOS 大苏尔
- vscode
- Anaconda 3(针对环境)
我在启动 Django 时遇到了这个错误。 所以,我按照这些步骤操作并解决了这个错误。
这些屏幕截图中给出了步骤:
打开设置(工作区)
按照这个截图打开Python路径
现在,点击
Edit in settings.json
按照此屏幕截图中给出的路径创建路径
/opt/anaconda3/bin/python
5。现在,保存这个 settings.json 文件。 6.重启vscode
此外,intellisense 可能会在一段时间内无法工作,请等待一段时间,然后重新启动,然后 vscode 读取新路径的文件。
我遇到了我创建的模块导入找不到的问题。我觉得我尝试了很多方法来确保 python 解释器选择是正确的,但都无济于事。我通过编辑 settings.json Python>Linting>Pylint Args 并添加 init-hook...
找到了对我有用的答案--init-hook="from pylint.config import find_pylintrc; import os, sys; sys.path.append(os.path.dirname(find_pylintrc()))"
此解决方案是在 PyLint "Unable to import" error - how to set PYTHONPATH? 中找到的。我没有创建和编辑 pylintrc,而是使用 VS Code GUI 添加了上面的内容。
我似乎遇到了这个问题,因为 django 安装在我的基本虚拟环境中,而不是我实际用于该项目的环境。这基本上导致它工作,但显示错误并且不能正确自动完成。
修复我只是
- 打开 Anaconda Navigator
- 单击左侧菜单中的环境
- Select您为项目使用的虚拟环境
- 在虚拟环境中,单击绿色三角形(加载后),然后 select 'Open Terminal'
- 运行 'pip install django'
完成此操作后,您可以返回 VS Code 并将 python 环境切换到基础,然后返回到 VS Code 左下角的所需环境。
错误应该会消失,自动完成应该会起作用。
好的,2 年后我 运行 遇到了这个烦人的问题。我在这里看到的只是一些非常复杂的解决方法。对于以后可能 运行 参与此操作的其他人来说,以下是简单易行的步骤:
- 在 VS Code 的底部,您会看到列出的 Python 版本,只需单击此处
- Select翻译windows即将出场
- 点击第一个选项“Select Interpreter Path”并导航到包含您的虚拟环境 的文件夹路径
这就是您需要做的所有事情,并避免在 VS Code 中调整这些设置,如果不小心处理,这些设置可能会变得非常复杂。
在子目录中导入模块,在.vscode/settings.json中添加如下设置:
"python.analysis.extraPaths": [
"./directory_name"
]