如何打开 Python 依赖项的符号?

How to open symbols of Python dependencies?

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

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

我想你想要的是 VS Code Autocomplete and Intellisense 设置的一部分。

为您定制packages/modules

假设我有这个示例结构:

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

其中 main.py 包含:

from mypkg import mymod
mymod.myfunc()

1,您需要在工作区的 .vscode/settings.json:[=24 中添加自定义 packages/modules 的路径=]

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

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

然后,您现在应该可以右键单击该符号(例如 myfunc)并执行 Go to Definition转到声明Peek.

对于外部或第 3 方符号

您只需确保当前选择的 Python 解释器与您安装外部或第 3 方包的解释器相同。您可以从命令面板将解释器设置为“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 中。然后保存您的工作区。每次您再次打开工作区时,它都会使用相同的解释器。

然后就和你的自定义方式一样了packages/modules,你可以使用Go to Definition或者Go to Declaration[=84] =] 或 Peek。例如,我在 test-py37 虚拟环境中安装了 numpy。我可以执行 Peek > Peek Definition 导航到任何 numpy 函数。

备注

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

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

另请参阅此问题:Provide a way to search for symbols in libraries #35