是否可以在VSCode中为C库(特别是pydrake)周围的Python绑定获取代码完成(Intellisense)



我正在努力熟悉pydrake库,它是围绕一个名为Drake的C++库的python绑定。我在virtualenv中安装了带有pip的库,并在VSCode中对其进行了修补。不幸的是,我无法完成大多数符号的代码,这让我很难知道:

  • 每个(子(模块中有哪些符号
  • 每个函数获取和返回的参数是什么

我目前的工作流程是在线浏览C++/Python API,它可以工作,但有点繁琐。

我试着用编辑settings.json

"python.autoComplete.extraPaths": [
"${workspaceFolder}/venv/lib/python3.8/site-packages/pydrake/",
"${workspaceFolder}/venv/lib/python3.8/site-packages/pydrake/lib/", 
"${workspaceFolder}/venv/lib/python3.8/site-packages/pydrake/common/",
"${workspaceFolder}/venv/lib/python3.8/site-packages/pydrake/manipulation/"
...
],
"python.analysis.extraPaths": [
"${workspaceFolder}/venv/lib/python3.8/site-packages/pydrake/",
"${workspaceFolder}/venv/lib/python3.8/site-packages/pydrake/lib/", 
"${workspaceFolder}/venv/lib/python3.8/site-packages/pydrake/common/",
"${workspaceFolder}/venv/lib/python3.8/site-packages/pydrake/manipulation/"
...
]

这是基于https://github.com/microsoft/vscode-python/issues/7736#issuecomment-537620794,因为这些文件夹包含cpython.so文件。这对我不起作用。

有可能为此获得智慧吗?

其他重要细节:

  • Ubuntu 20.04 5.15.0-48-generic
  • VSCode版本:1.71.2 74b1f979648cc44d385a2286793c226e611f59e7
    • Python扩展版本:v2022.14.0
  • drake版本:drake==1.8.0

请参阅https://github.com/RobotLocomotion/drake/issues/16987.这是一项正在进行的工作。

截至今天(2022-Sep-26(,pydrake库尚未为VSCode自动完成提供*.pyi文件。

通常,您可以尝试运行像stubgen这样的工具,从本机*.so文件自动生成*.pyi文件,然后使用这些文件自动完成,但对于pydrake,这些工具还不了解我们的模板,因此结果不是很有用。

同时,基于Jupyter的编辑器(例如Deepnote(通常会自动正确地完成本机代码。只有VSCode的病毒保护姿态——不加载本机代码进行自动完成——才妨碍了你。

最新更新