IntelliSense 不列出具有 VSCode 交互式 Python 代码文件的成员

问题描述 投票:0回答:1

在 VSCode 中,我使用 Python 交互模式。我在一个窗格中打开了一个 Python 脚本,然后在另一个窗格中打开的交互式终端中执行代码。 IntelliSense 在交互式窗格中正常工作 - 当我键入“。”时在一个对象之后,它列出了该对象的所有成员。但是当我在脚本窗格中尝试同样的事情时,它没有列出对象的成员。

下面的例子。

在交互式窗格中,IntelliSense 提供了对象成员的完整列表: Interactive pane autocomplete

但是当我在 Python 脚本中尝试同样的事情时,它无法在单元格运行后列出对象的成员: Script pane autocomplete

我尝试了以下方法来解决这个问题:

  • 更新到最新的VScode,并卸载/重新安装微软的Python扩展(没有安装其他扩展)
  • 在 VScode 设置中,确保语言服务器使用的是 Pylance
  • 我在 conda 虚拟环境中运行,我只有一个终端在运行

我的解决方法是,当我想检查一个变量时,我切换到交互面板以使用它的自动完成功能,然后切换回脚本面板继续编码。理想情况下,我应该能够在脚本窗格中看到完整的自动完成功能。

请告知是否有办法解决这个问题。

编辑:下面的最小示例。 IntelliSense 问题似乎特定于下面创建的名为

history
的 Tensorflow/Keras 对象,因此我正在导入 Tensorflow 以重现该问题:

#%% Execute this code cell in the Python interactive pane
import tensorflow as tf
model = tf.keras.Sequential([tf.keras.Input(1), tf.keras.layers.Dense(1)])
model.compile(loss='mse', optimizer='sgd')
history = model.fit([0, 1], [0, 1])

运行此命令后,当我键入

history.
history
加上触发字符
.
)时,IntelliSense 应弹出一个小框,列出
history
对象的所有成员(例如
history.epoch
history.params
).

IntelliSense 在交互窗格中工作:IntelliSense invoked from Interactive pane

但 IntelliSense 失败并显示“无建议”。在脚本窗格中:After running cell, IntelliSense doesn't lists object's members when triggered in script pane

python visual-studio-code intellisense interactive pylance
1个回答
0
投票

Python和Pylance extensions提供的intellisense是静态分析

很明显,你需要的intellisense必须在运行模型之后才能得到,这是intellisense无法实现的

您已经提到的解决方案是使用交互式窗口运行代码单元以获得智能感知。另一种方法与此类似,您可以使用类似于交互式窗口的

.ipynb
文件。运行代码单元后即可得到提示

© www.soinside.com 2019 - 2024. All rights reserved.