【发布时间】:2021-03-22 21:53:05
【问题描述】:
这是几个月前的similar situation I'd encountered,在pylance之前使用pylint:
我的python 3.9x - 脚本(在Ubuntu 20.04 LTS 上使用VS Code)从以下自定义“工具”的导入开始:
import sys
sys.path.append(
'/home/andylu/Dokumente/Allgemeines_material/Sonstiges/Programming/Python/Scripts/'
)
import General.Misc.general_tools as tools
现在,Pylance 表示:
Import "General.Misc.general_tools" could not be resolvedPylance (reportMissingImports)
即使在程序执行期间模块被完美导入,也会发生这种情况。
因此,为了确保让Pylance 了解这是一个现有的模块路径,除了sys.path.append(..) - 方法之外,我在settings.json - 文件中添加了以下内容:
{
...
// Possible values: "Jedi", "Pylance", "Microsoft", "None".
"python.languageServer": "Pylance",
// NOTE on changing from microsoft to pylance language server: python.autoComplete.extraPaths --> python.analysis.extraPaths
// Docs: https://github.com/microsoft/pylance-release/blob/master/TROUBLESHOOTING.md#unresolved-import-warnings
"python.analysis.extraPaths": [
"/home/andylu/Dokumente/Allgemeines_material/Sonstiges/Programming/Python/Scripts"
],
...
}
然而,我仍然收到reportMissingImports-消息,即使它被正确导入。
我发现here 的一种解决方法效果很好(将# type: ignore 附加到导入语句):
import General.Misc.general_tools as tools # type: ignore
尽管如此,这只是一种解决方法,这就是为什么我要解决这个问题的根源。从技术上讲,我之前使用的是the same workaround 来消除来自pylint 的类似警告消息。可能这是 VS-Code settings.json 配置所固有的,因为使用 VS-Code 是这里的常数因素。
编辑未解决问题的其他措施:
我加了
export PYTHONPATH="$PYTHONPATH:/home/andylu/Dokumente/Allgemeines_material/Sonstiges/Programming/Python/Scripts"
到我的~/.bashrc - 文件,这使我现在可以从终端直接在python-shell 中导入模块,而无需之前的sys-path 操作。然而,这仅适用于全局系统 python 环境,而不适用于任何虚拟环境。
为了更改那里的系统路径,我关注了these instructions,而我的特定虚拟环境“scrapy_course”是打开的,如下所示:
(scrapy_course) andylu@andylu-Lubuntu-PC:~/$ add2virtualenv /home/andylu/Dokumente/Allgemeines_material/Sonstiges/Programming/Python/Scripts
该命令适用于virtualenvwrapper,它与pyenv一起巧妙地管理虚拟环境。
现在,即使在导入模块之前没有sys.path.append(...),我也可以在当前环境中运行上述脚本,但pylance 仍然无法正确识别路径并显示与以前相同的警告。
编辑"python.analysis.useImportHeuristic": true:
我已经在我的全局settings.json 文件中不断激活此选项,但我仍然没有注意到任何效果。一旦这种情况发生变化,或者最终有一个(不同的)解决方案出现在我面前,我会及时通知您。
关于抑制/禁用 Pylance 'reportMissingImports' linting-message 的编辑:
我已经找到了how to suppress a specific Pylance-linting-message,如果您对此感兴趣,可以作为一种解决方法。特别是在我目前的情况下,无论如何我都需要在parallel 中使用pylint,所以我根本不依赖Pylance 的linter。
【问题讨论】:
-
如果你做
import General会解决吗,如果你在启动VSC之前添加PYTHONPATH的路径怎么办。也许 PyLance 只需要"python.analysis.extraPaths"中的相对路径 -
感谢您的提示。它让我尝试了其他措施(请参阅上面我最初帖子的编辑)。我仍然从 pylance 收到相同的警告信息。除此之外,就我而言,绝对路径应该始终有效,但即使这是问题所在,现在我的项目中设置了所有
python- 和sys-paths-venv,并且仍然pylance不认识它。 -
然后考虑向 PyLance 不遵守
PYTONPATH提出问题,但是虚拟环境如何合并本地和系统安装的模块,PyLance 可以处理这些 -
现在,由于某种原因,它停止发出警告。我不知道它是如何解决的,但现在我关闭了
pylanceGitHub 网站上发布的问题:github.com/microsoft/pylance-release/issues/724 -
我遇到了同样的掉毛问题。除了在 import 语句的末尾添加
# type: ignore之外,似乎仍然没有其他解决方案。
标签: python-3.x visual-studio-code python-import vscode-settings pylance