jAC*_*jAC 42 python django pylint visual-studio-code
我正在使用以下设置
我希望我们能够在visual studio代码中使我的生活变得更轻松,但是,每次导入我都会声明"未解决的导入".即使是默认的django导入(即来自django.db的导入模型).
我认为这是因为它没有看到虚拟环境python文件.
一切都很好,但它开始变得烦人.
我拥有的解释器选项都是python的系统版本.它似乎根本看不到我的虚拟环境python(它与我的工作区不在同一个目录中,因此该部分有意义).
如果我在settings.json文件中设置python.PythonPath,它只是忽略它并且不会将我的虚拟环境路径列为选项.我也尝试在我的全局python设置中进行设置,但它也没有显示出来.
有没有人遇到这个问题并知道快速解决方案让它工作?
谢谢,jAC
rud*_*dra 35
在工作区设置中,您可以像这样设置python路径:
{
"python.pythonPath": "/path/to/your/venv/bin/python",
}
Run Code Online (Sandbox Code Playgroud)
Shi*_*r G 26
导入自己的模块时,已接受的答案无法解决错误。在工作空间设置中使用以下设置.vscode/settings.json
"python.autoComplete.extraPaths": ["./path-to-your-code"],
Run Code Online (Sandbox Code Playgroud)
参考:https : //github.com/microsoft/python-language-server/blob/master/TROUBLESHOOTING.md#unresolved-import-warnings
Tom*_*zik 20
该问题已在GitHub上公开:https : //github.com/Microsoft/vscode-python/issues/3840 MagnuesBrzenk和SpenHouet提供了2个非常有用的答案。
目前最好的解决方案是在项目根文件夹中创建一个.env文件。然后像这样添加一个PYTHONPATH:
PYTHONPATH=YOUR/MODULES/PATH
Run Code Online (Sandbox Code Playgroud)
并在您的settings.json中添加
"python.envFile": ".env"
Run Code Online (Sandbox Code Playgroud)
小智 20
如果你更像我自己,你可以使用菜单File 中的 Visual Studio Code 配置?偏好?设置( Ctrl+ ,)。转到扩展?蟒蛇。
在Analysis: Disabled部分,添加对以下消息的抑制unresolved-import:
hex*_*exr 20
除了这个解决方案外,没有一个解决方案有效。替换 settings.json 中的“Pylance”或“Microsoft”解决了我的问题。
"python.languageServer": "Jedi"
Run Code Online (Sandbox Code Playgroud)
Eva*_*tti 17
您需要选择与虚拟环境关联的解释器。
单击此处(在底部状态栏):
只需选择您正在使用的虚拟环境。完毕。
有时,即使选择了解释器,它也不起作用。只需再次重复该过程,它应该可以解决它。
ted*_*ted 16
另一种方式:使用命令界面!
cmd/ctrl + shift + p>> Python: Select Interpreter选择包含您要查找的软件包的一个
小智 15
我想知道这个问题有多少个解决方案(或没有),我尝试了上面的大部分方法,没有任何效果,唯一有效的解决方案是在 settings.json 文件中将 python 语言服务器设置为 Jedi,而不是 Microsoft:
"python.languageServer": "Jedi"
Run Code Online (Sandbox Code Playgroud)
小智 13
如果settings.json文件中包含此代码,请将其删除
{
"python.jediEnabled": false
}
Run Code Online (Sandbox Code Playgroud)
dil*_*ess 10
以前的答案都不适合我。但是,将以下两行添加到我的settings.json文件中。
"python.analysis.disabled": [
"unresolved-import"
],
"python.linting.pylintArgs": ["--load-plugin","pylint_protobuf"]
Run Code Online (Sandbox Code Playgroud)
第一行实际上只是隐藏了 linting 错误。当然不是永久性的解决方案,但可以使屏幕变得整洁。
这个答案给了我第二行:VS Code PyLint Error E0602 (undefined variable) with ProtoBufcompiled Python Structure
也许比我更了解 Python 的人可以再解释一下。
Sur*_* Jr 10
好吧,两年后,我遇到了这个恼人的问题。我在这里看到的只是一些非常复杂的解决方法。对于以后可能遇到此问题的其他人来说,以下是易于遵循的步骤:
这就是您需要做的所有事情,并避免篡改 VS Code 中的这些设置,如果不小心处理,这些设置可能会变得非常复杂。
此解决方案仅适用于当前项目。
在项目根目录下,创建文件夹 .vscode
然后创建文件 .vscode/settings.json
在文件中setting.json,添加行(这适用于 Python 3)
{
"python.pythonPath": "/usr/local/bin/python3",
}
Run Code Online (Sandbox Code Playgroud)
这是 Python 2 的示例
{
"python.pythonPath": "/usr/local/bin/python",
}
Run Code Online (Sandbox Code Playgroud)
如果您不知道 Python 安装位置,只需运行命令which python或which python3在终端上。它将打印 Python 位置。
此示例适用于dockerized Python - Django。
我在导入项目相关(非标准)模块时遇到了同样的问题。问题的详细解释
目录结构:
Project_dir:
.vscode/settings.json
dir_1
> a
> b
> c
dir_2
> x
> y
> z
Run Code Online (Sandbox Code Playgroud)
我们想要什么:
Project_dir
dir_3
import a
import y
Run Code Online (Sandbox Code Playgroud)
这里“ import a ”和“ import y ”失败并出现以下错误:
Import "dir_1.a" could not be resolvedPylancereportMissingImports
Import "dir_2.y" could not be resolvedPylancereportMissingImports
Run Code Online (Sandbox Code Playgroud)
对我有用的:
附加包含要导入的模块的顶级目录。
在上面的示例中,在“.vscode/settings.json”中添加以下“要附加的代码”
文件名:
.vscode/settings.json
Run Code Online (Sandbox Code Playgroud)
要附加的代码:
"python.analysis.extraPaths": [dir_1, dir_2]
Run Code Online (Sandbox Code Playgroud)
When I > reload window that fixes.
ref: https://github.com/Microsoft/vscode-python/issues/3840#issuecomment-452657892
我可以通过在.vscode \ settings.json中启用jedi来解决此问题
"python.jediEnabled": true
Run Code Online (Sandbox Code Playgroud)
来自https://github.com/Microsoft/vscode-python/issues/3840#issuecomment-456017675的参考
Shinebayar G 的解决方案有效,但另一个更优雅:
给定以下示例项目结构:
我做了什么来解决这个问题:
对我来说,问题与我正在从事的项目有关。我花了一段时间才弄明白,所以我希望这会有所帮助:
原始文件夹结构:
root/
__init__.py # Empty
folder/
__init__.py # Empty
sub_folder_b/
my_code.py
sub_folder_c/
another_code.py
Run Code Online (Sandbox Code Playgroud)
在 another_code.py 中:
from folder.sub_folder_b import my_code.py
Run Code Online (Sandbox Code Playgroud)
这没有触发 Visual Studio Code 中的智能感知,但它确实执行正常。
另一方面,在导入路径上添加“root”确实使智能感知工作,但在执行时引发 ModuleNotFoundError :
from root.folder.sub_folder_b import my_code.py
Run Code Online (Sandbox Code Playgroud)
解决方案是删除“文件夹”目录中的 _ init _.py 文件,只留下 _ init _.py 位于/root.