【问题标题】:Is it possible to get Code Completion (Intellisense) in VSCode for Python bindings around a C library (Specifically pydrake)是否可以在 VSCode 中获得代码完成(Intellisense)以围绕 C 库(特别是 pydrake)绑定 Python
【发布时间】:2022-09-27 11:16:54
【问题描述】:

我试图让自己熟悉pydrakelibrary,它是围绕一个名为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 的 cmets,因为这些文件夹包含 cpython .so 文件。那对我不起作用。

是否有可能为此获得智能感知?

其他重要的细节:

  • Ubuntu 20.04 5.15.0-48-通用
  • VSCode 版本:1.71.2 74b1f979648cc44d385a2286793c226e611f59e7
    • Python 扩展版本:v2022.14.0
  • 德雷克版本:drake==1.8.0
  • PyLance 使用.pyi 文件,它们只包含类/方法声明和文档字符串。我不知道您是否可以使用用户定义的.pyi 文件定义位置
  • 嗯,pydrake python 包没有tree -f | grep .pyi 的输出,所以我想这不是这个包的选项吗?
  • 您可以通过将源文件通过过滤器来创建.pyi 文件,但您首先需要查找是否可以使用简单的测试文件将自定义pyi 文件添加到pylance

标签: visual-studio-code intellisense cpython drake


【解决方案1】:

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

截至今天(2022 年 9 月 26 日),pydrake 库还没有为 VSCode 自动完成提供*.pyi 文件。

一般来说,您可以尝试运行stubgen 之类的工具,以从本机*.so 文件自动生成*.pyi 文件,然后将其用于自动完成,但对于pydrake,这些工具还不了解我们的模板,所以结果并不是非常有用。

【讨论】:

    猜你喜欢
    • 2011-04-25
    • 2013-09-09
    • 1970-01-01
    • 1970-01-01
    • 2012-11-16
    • 2018-12-28
    • 2016-05-26
    • 1970-01-01
    • 2013-02-08
    相关资源
    最近更新 更多