Visual Studio Code中的PyLance不识别Poetry虚拟环境依赖项

4 投票
1 回答
202 浏览
提问于 2025-04-14 18:36

我在用Poetry来管理一个Python项目。我通过正常的poetry installpyproject.toml流程为Poetry创建了一个虚拟环境。但是,在Jupyter Notebook中,Visual Studio Code和它的PyLance并没有识别到项目的依赖。

  • Python的标准库模块是被识别的
  • 我应用程序的模块是被识别的
  • 但是我应用程序所用的依赖和库中的模块却没有被识别

相反,你会看到一个错误

Import "xxx" could not be resolved Pylance (reportMissingImports)

下面是一个示例截图,展示了哪些导入被识别,哪些没有被识别(tradeexecutor包是Poetry项目,而一些随机的Python包依赖没有被识别)。:

这里输入图片描述

这里输入图片描述

在Visual Studio Code中,笔记本还是能正常运行,所以问题是出在PyLance上,虚拟环境肯定是设置正确的。

一些Python语言服务器的输出(如果相关的话):

2024-03-01 10:15:40.628 [info] [Info  - 10:15:40] (28928) Starting service instance "trade-executor"
2024-03-01 10:15:40.656 [info] [Info  - 10:15:40] (28928) Setting pythonPath for service "trade-executor": "/Users/moo/code/ts/trade-executor"
2024-03-01 10:15:40.657 [info] [Info  - 10:15:40] (28928) Setting environmentName for service "trade-executor": "3.10.13 (trade-executor-8Oz1GdY1-py3.10 venv)"
2024-03-01 10:15:40.657 [info] [Info  - 10:15:40] (28928) Loading pyproject.toml file at /Users/moo/code/ts/trade-executor/pyproject.toml
2024-03-01 10:15:40.657 [info] [Info  - 10:15:40] (28928) Pyproject file "/Users/moo/code/ts/trade-executor/pyproject.toml" has no "[tool.pyright]" section.
2024-03-01 10:15:41.064 [info] [Info  - 10:15:41] (28928) Found 763 source files
2024-03-01 10:15:41.158 [info] [Info  - 10:15:41] (28928) Background analysis(4) root directory: file:///Users/moo/.vscode/extensions/ms-python.vscode-pylance-2024.2.2/dist
2024-03-01 10:15:41.158 [info] [Info  - 10:15:41] (28928) Background analysis(4) started
2024-03-01 10:15:41.411 [info] [Info  - 10:15:41] (28928) Indexer background runner(5) root directory: file:///Users/moo/.vscode/extensions/ms-python.vscode-pylance-2024.2.2/dist (index)
2024-03-01 10:15:41.411 [info] [Info  - 10:15:41] (28928) Indexing(5) started
2024-03-01 10:15:41.662 [info] [Info  - 10:15:41] (28928) scanned(5) 1 files over 1 exec env
2024-03-01 10:15:42.326 [info] [Info  - 10:15:42] (28928) indexed(5) 1 files over 1 exec

看起来PyLance在之前的Python语言服务器输出中正确找到了虚拟环境:

2024-03-03 19:36:56.784 [info] [Info  - 19:36:56] (41658) Pylance language server 2024.2.2 (pyright version 1.1.348, commit cfb1de0c) starting
2024-03-03 19:36:56.789 [info] [Info  - 19:36:56] (41658) Server root directory: file:///Users/moo/.vscode/extensions/ms-python.vscode-pylance-2024.2.2/dist
2024-03-03 19:36:56.789 [info] [Info  - 19:36:56] (41658) Starting service instance "trade-executor"
2024-03-03 19:36:57.091 [info] [Info  - 19:36:57] (41658) Setting pythonPath for service "trade-executor": "/Users/moo/Library/Caches/pypoetry/virtualenvs/trade-executor-8Oz1GdY1-py3.10/bin/python"
2024-03-03 19:36:57.093 [info] [Info  - 19:36:57] (41658) Setting environmentName for service "trade-executor": "3.10.13 (trade-executor-8Oz1GdY1-py3.10 venv)"
2024-03-03 19:36:57.096 [info] [Info  - 19:36:57] (41658) Loading pyproject.toml file at /Users/moo/code/ts/trade-executor/pyproject.toml

如何进一步诊断这个问题并解决它呢?

1 个回答

0

有些其他人也遇到了同样的问题。

Visual Studio Code中的PyLance功能似乎有一些内部限制,可能导致无法索引所有文件。不过,我的情况并不是这样。相反,PyLance似乎是出现了某种损坏。

我通过在命令面板中运行:PyLance: 清除所有持久索引来解决了这个问题。之后,PyLance的表现就正常了。

撰写回答