【问题标题】:How to get code-completion for COM programming in PyCharm?如何在 PyCharm 中完成 COM 编程的代码?
【发布时间】:2017-02-16 12:03:49
【问题描述】:

在使用app = win32com.client.Dispatch('Some.Application') 时,有没有可行的方法在 PyCharm 中完成代码?必须从 API 文档中重新输入(或复制粘贴)所有内容是相当乏味的,创建 skeletons 也是如此。有没有其他方法可以让 PyC​​harm 知道通过 COM 提供的接口,特别是如果我可以提供 .tlb 文件?或者至少有某种方法可以从 TypeLib 中自动生成这样的骨架(或包装模块?)?

【问题讨论】:

标签: python pycharm win32com code-completion typelib


【解决方案1】:

由于 PyCharm 无法知道 app 的运行时类型,因此您不应期望直接在 app 上获得代码完成;至少在他们决定为从类型库生成代码添加内置支持之前不会。

但是,您可以利用 win32com 隐式生成基于 the first part of this answer 中描述的类型库的代码这一事实,以及 PyCharm 对类型提示的支持,以在 COM 方法上完成代码。

  1. 确保 Python 类型已经生成;它们的位置由 COM 对象的 GUID 确定。例如,我机器上的 Microsoft Word 2016 的类型可在 C:\Users\username\appdata\local\temp\gen_py\3.6\00020905-0000-0000-c000-000000000046x0x8x7\
  2. 将此文件夹添加到 PyCharm Python 解释器的路径中;参见例如this answer.
  3. 导入要完成代码的模块。

在下面的屏幕截图中,我们将这种方法与 Word 的 Find 一起使用:

现在,除了感觉很脏之外,这种方法依赖于已经生成的相关类型,并且代码完成仅限于对象发布的方法,所以我想它在实践中的用处可能会受到一定的限制;特别是,任何处理代码的人都必须生成代码,否则注释将导致NameErrors。就个人而言,我可能更喜欢将 Jupyter 用于实施过程的探索性部分,并且通过 the answer mentioned above 中概述的最小调整,Jupyter 可以扩展为使用 win32com 完成完整的代码。

【讨论】:

    猜你喜欢
    • 2017-04-30
    • 2014-08-26
    • 1970-01-01
    • 1970-01-01
    • 2023-04-06
    • 2020-01-31
    • 1970-01-01
    • 2018-11-10
    • 2018-09-01
    相关资源
    最近更新 更多