我正在使用以下设置
macOS v10.14(莫哈韦沙漠)
Python 3.7.1
视觉工作室代码 1.30
皮林特 2.2.2
Django 2.1.4
我想使用 linting 让我在 Visual Studio Code 中的生活更轻松一些。但是,对于每个导入,我都有“未解决的导入”状态。即使是默认的 Django 导入(即从 django.db 导入模型)。
我认为这是因为它没有看到虚拟环境 Python 文件。
一切正常,但它开始变得烦人。
我拥有的解释器选择都是 Python 的系统版本。它似乎根本看不到我的虚拟环境 Python(它与我的工作区不在同一个目录中,所以这部分是有道理的)。
如果我在 settings.json 文件中设置了 python.PythonPath,它只会忽略它并且不会将我的虚拟环境路径列为选项。我也尝试在我的全局 Python 设置中进行设置,但它也没有显示出来。
有没有快速修复让它工作?
pip install pylint-django
,然后在 vs 代码设置中添加:"python.linting.pylintArgs": [ "--load-plugins=pylint_django", ],
python -m pip install pylint
中安装 pylint,然后将 VS Code 中的 pylintPath 更新为 venv pylint。
导入自己的模块时,接受的答案不会修复错误。
在您的工作区设置 .vscode/settings.json
中使用以下设置:
"python.autoComplete.extraPaths": ["./path-to-your-code"],
参考:Troubleshooting, Unresolved import warnings
在您的 workspace settings 中,您可以像这样设置 Python 路径:
{
"python.defaultInterpreterPath": "/path/to/your/venv/bin/python",
}
code <project_directory> -r
)或重新启动 vscode。
manage.py
位于 workspace
的根目录中。另请确保 pylint is configured properly
另一种方式:使用命令界面!
Cmd/Ctrl + Shift + P → Python:选择解释器 → 选择包含您要查找的包的那个:
https://i.stack.imgur.com/XQEku.gif
venv
,因此我将它指向该项目的 venv
目录中的特定 Python
./bin/python
此问题已在 GitHub 上打开:
Python unresolved import issue #3840
MagnuesBrzenk 和 SpenHouet 有两个非常有用的答案。
目前最好的解决方案是在项目根文件夹中创建一个 .env 文件。然后像这样向它添加一个 PYTHONPATH:
PYTHONPATH=YOUR/MODULES/PATH
在你的 settings.json 添加:
"python.envFile": ".env"
"${workspaceFolder}/.env"
PYTHONPATH=FolderName
add2virtualenv YOUR/MODULES/PATH
),然后选择此 virtualenv 作为您的 python 解释器。
site-packages
的路径吗?
当我执行 > reload window
时,它会修复它。
参考:Python unresolved import issue #3840, dkavraal's comment
除了这个之外,没有任何解决方案有效。替换 settings.json 中的“Pylance”或“Microsoft”解决了我的问题。
"python.languageServer": "Jedi"
如果您的 settings.json
文件中有此代码,请将其删除:
{
"python.jediEnabled": false
}
如果您像我一样更直观,可以使用菜单 File → Preferences → Settings (Ctrl + ,) 中的 Visual Studio Code 配置。转到扩展 → Python。
在 Analysis: Disabled 部分中,添加对以下消息的抑制:unresolved-import
:
https://i.stack.imgur.com/WGGx5.png
我能够通过在 .vscode\settings.json 中启用绝地来解决这个问题
"python.jediEnabled": true
来自 https://github.com/Microsoft/vscode-python/issues/3840#issuecomment-456017675 的参考
您需要选择与虚拟环境关联的解释器。
https://i.stack.imgur.com/udg9m.png
点击这里(在底部状态栏):
https://i.stack.imgur.com/7nhIB.png
只需选择您正在使用的虚拟环境。完毕。
有时,即使选择了解释器,它也不起作用。只需再次重复该过程,它应该可以解决它。
https://i.stack.imgur.com/tqnpg.png
~\.julia\conda\3\python.exe
安装了自己的 Python 解释器。
我想知道这个问题有多少解决方案(或没有),我尝试了上面的大部分方法,没有任何效果,唯一有效的解决方案是在 settings.json 文件中将 python 语言服务器设置为 Jedi,而不是 Microsoft:
"python.languageServer": "Jedi"
以前的答案都不适合我。但是,将以下两行添加到我的 settings.json 文件中。
"python.analysis.disabled": [
"unresolved-import"
],
"python.linting.pylintArgs": ["--load-plugin","pylint_protobuf"]
第一行实际上只是隐藏了 linting 错误。当然不是一个永久的解决方案,但可以消除屏幕的混乱。
这个答案给了我第二行:VS Code PyLint Error E0602 (undefined variable) with ProtoBuf compiled Python Structure
也许比我更了解 Python 的人可以再解释一下。
我的解决方案
此解决方案仅适用于当前项目。
在项目根目录中,创建文件夹 .vscode 然后创建文件 .vscode/settings.json 在文件 setting.json 中,添加行(这是针对 Python 3) { "python.pythonPath": "/usr/local/bin /python3", } 这是 Python 2 的示例 { "python.pythonPath": "/usr/local/bin/python", } 如果你不知道你的 Python 安装在哪里,只需运行命令 which python或终端上的哪个python3。它将打印 Python 位置。此示例适用于 dockerized Python - Django。
好的,所以两年后我遇到了这个烦人的问题。我在这里看到的只是一些非常复杂的解决方法。对于以后可能遇到此问题的其他人,以下是易于遵循的步骤:
在 VS Code 的底部,您会看到列出的 Python 版本,只需单击那里
选择解释器窗口将出现
单击显示“选择解释器路径”的第一个选项,然后导航到包含您的虚拟环境的文件夹路径
这就是您需要做的所有事情,并避免在 VS Code 中使用那些可能会变得非常复杂或不小心处理的设置。
The solution from Shinebayar G 有效,但另一个更优雅一点:
复制自 Python unresolved import issue #3840:
给定以下示例项目结构:
工作区根文件夹 .vscode
.vscode
... 其他文件夹
代码文件夹
我为解决此问题所做的工作:
进入工作区文件夹(这里是 workspaceRootFolder)并创建一个 .env 文件在这个空的 .env 文件中,添加行 PYTHONPATH=codeFolder(将 codeFolder 替换为您的文件夹名称)添加“python.envFile”:“${workspaceFolder}/. env" 到 settings.json 重新启动 Visual Studio 代码
对我来说,这个问题与我正在从事的项目有关。我花了一段时间才弄清楚,所以我希望这会有所帮助:
原始文件夹结构:
root/
__init__.py # Empty
folder/
__init__.py # Empty
sub_folder_b/
my_code.py
sub_folder_c/
another_code.py
在另一个_code.py 中:
from folder.sub_folder_b import my_code.py
这并没有触发 Visual Studio Code 中的智能感知,但它执行正常。
另一方面,在导入路径上添加“root”确实使智能感知工作,但在执行时引发了 ModuleNotFoundError:
from root.folder.sub_folder_b import my_code.py
解决方案是删除“文件夹”目录中的 _init_.py 文件,只留下位于 /root
的 _init_.py。
这对我有用:
打开命令面板(Ctrl + Shift + P)并选择“Python:选择解释器”。
这样做,您在 Visual Studio Code 中设置 Python 解释器。
在导入与项目相关的(非标准)模块时,我遇到了同样的问题。问题的详细解释
目录结构:
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]
package_name
文件夹中的 package_name
文件夹中的代码。仅将 package_name
添加到“extraPaths”(不是绝对路径)就可以了。
这里的答案都没有为我解决这个错误。代码会运行,但我无法直接跳转到函数定义。它仅适用于某些本地软件包。一方面,python.jediEnabled
不再是一个有效的选项。我做了两件事,但我不确定第一件事是否必要:
下载 Pylance 扩展,将 python.languageServer 更改为 "Pylance" 添加 "python.analysis.extraPaths": [ "path_to/src_file" ]
显然,将检查根和 src
是否有本地包,但必须在此处添加其他包。
发生这种情况是因为 Visual Studio Code 将您当前的文件夹视为主文件夹,而不是考虑实际的主文件夹。
修复的快速方法是提供主文件夹的解释器路径。
按 Command + Shift + P(或在大多数其他系统上按 Ctrl + Shift + P)。
键入 Python 解释器
从可用选项中选择安装 Python 的路径。
将 Python:Language Server 更改为“Jedi”对我有用。最初是“Windows”。
对我来说,如果我将 python、pylint 和 autopep8 的路径设置为本地环境路径,它就会起作用。
对于您的工作区添加/更改此:
"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。完毕!
我正在使用以下设置:(2021 年 4 月)
马科斯大苏尔
代码
Anaconda 3(用于环境)
我在 Django 启动期间遇到了这个错误。所以,我按照这些步骤操作,这个错误就解决了。
这些屏幕截图中给出了步骤:
打开设置(工作区) 按照此屏幕截图打开 Python 路径 现在,单击 settings.json 中的编辑 制作此屏幕截图中给出的路径 /opt/anaconda3/bin/python
5. 现在,保存这个 settings.json 文件。 6.重启vscode
此外,intellisense 可能会在一段时间内无法工作,请等待一段时间,然后再次重新启动,然后 vscode 会读取文件以获取新路径。
我有一个不同的解决方案:我的 Visual Studio Code 实例获取了存储在 .venv
中的 virtualenv,但它使用了错误的 Python 二进制文件。它正在使用 .venv/bin/python3.7
;使用蓝色状态栏中的切换器。
我将其更改为使用 .venv/bin/python
并且我的所有导入都已正确解析。
当我这样做时,我不知道 Visual Studio Code 在幕后做了什么,也不明白为什么这会导致我的问题,但对我来说,这是一个比编辑我的工作区设置更简单的解决方案。
如果出现 Pylint 错误,请安装以下内容
pipenv install pylint-django
然后在根文件夹中创建一个文件 .pylintrc 并写入以下内容
load-plugins=pylint-django
我从三个方面面对这个问题。尽管对于他们每个人来说,这个问题的答案都有一个解决方案,但我只是想把它们放在一起。
首先,我在导入一些模块时遇到了“未解析的导入”,我注意到我的安装是在全局 pip 而不是虚拟环境中进行的。这个问题是因为 Python 解释器。您需要使用 Shift + Ctrl + P 在 Visual Studio Code 中选择解释器,然后键入 Select Python Interpreter。在此处选择您的 venv 解释器。第二个问题是:上述更改并没有完全解决我的问题。这次是因为文件 settings.json。如果您的项目目录中没有 settings.json 文件,请创建一个并在其中添加以下行: { "python.pythonPath": "apis/bin/python" } 这基本上会告诉 Visual Studio Code 使用venv 中的 Python 解释器。第三个问题是在另一个程序中导入自定义 Python 模块或文件时。为此,您需要了解文件夹结构。由于 venv 中的 Python 在 bin 中,因此您需要指定模块的文件夹(大多数情况下是应用程序文件夹)。在我的情况下,它是应用程序,从 app.models 导入 setup_db 口头上,从 models.py 导入 setup_db 位于 app 文件夹中。
如果您使用的是 pipenv
,那么您需要指定虚拟 environment.in settings.json
文件的路径。例如 :
{
"python.pythonPath":
"/Users/username/.local/share/virtualenvs/Your-Virual-Env/bin/python"
}
这可以提供帮助。
如果有人碰巧像我一样愚蠢,那么下面的工作就奏效了。
旧文件夹结构:
awesome_code.py
__init__.py
src/
__init__.py
stuff1.py
stuff2.py
新结构:
awesome_code.py
src/
__init__.py
stuff1.py
stuff2.py
如何避免警告
请注意,这只是跳过没有解决它的警告。首先在 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 警告。
https://i.stack.imgur.com/87e9c.png
我已经通过 Ctrl + Shift + P 解决了导入错误。键入“首选项设置”并选择选项首选项打开设置(JSON)
并添加行 "python.pythonPath": "/usr/bin/"
因此 JSON 内容应如下所示:
{
"python.pythonPath": "/usr/bin/"
}
如果存在其他配置行,请保留它们。这应该导入您使用 PIP 安装的所有模块以进行自动完成。
不定期副业成功案例分享