2

在 vscode 中,如何在我的 Python 项目的依赖项中打开符号?

PyCharm 索引这些符号,因此我可以通过 Navigate - Symbol (⌥⌘O) 访问它们。

4

2 回答 2

2

我认为您想要的是VS Code的自动完成和智能感知设置的一部分。

对于您自己的自定义包/模块

假设我有这个示例结构:

.
├── main.py
└── mypkg
    ├── __init__.py
    └── mymod.py

其中main.py包含:

from mypkg import mymod
mymod.myfunc()

1st,您需要在工作区的.vscode/settings.json中添加自定义包/模块的路径:

"python.autoComplete.extraPaths": [
    "/path/to/mypkg"
]

接下来,最好重新加载 VS Code 以使settings.json中的更改生效。

然后,您现在应该能够右键单击符号(例如myfunc)并执行Go to DefinitionGo to DeclarationPeek

去定义

窥视

对于外部或第 3 方符号

您只需确保当前选择的 Python 解释器与您安装外部或 3rd-party 包的位置相同。您可以从命令面板将解释器设置为“ Python: Select Interpreter ”。您可以在状态栏的右下角检查当前设置的解释器(例如,在下图中显示为“test-py37”)。

状态栏

然后确保在工作区的.vscode/settings.json中设置相同的 Python 解释器:

"python.pythonPath": "/path/to/.venvs/test-py37/bin/python",

AFAIK,您只需设置一次解释器(“ Python: Select Interpreter ”),它会python.pythonPathsettings.json 中自动设置。然后保存您的工作区。每次您再次打开工作区时,它都会使用相同的解释器。

然后它将与您的自定义包/模块相同,您可以使用Go to DefinitionGo to DeclarationPeek。例如,我安装numpy在我的test-py37虚拟环境中。我可以执行Peek > Peek Definition来导航到任何 numpy 的函数。

在此处输入图像描述

笔记

一些 Python 包实际上是用 C 实现的,因此它们作为.so文件安装在您的站点包中。例如,OpenCV for Python 将安装为cv2.cpython-37m-darwin.so(在 Mac 上)。对于这些类型的包,Go to DefinitionPeek功能将无法正常工作:

偷看opencv

于 2019-12-24T12:15:22.240 回答
0

Pylance 语言服务器将索引会话期间打开的文件中的符号。因此,如果打开工作区外的第 3 方依赖文件,其符号将被索引并出现在Go to Symbol in Workspace (⌘T)

另请参阅此问题:提供一种在库 #35 中搜索符号的方法

于 2021-10-10T01:16:34.233 回答