如何在 PyCharm 中获得 COM 编程的代码完成?

Tob*_*ler 5 python typelib code-completion win32com pycharm

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

fug*_*ede 4

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

但是,您可以利用本答案第一部分win32com中所描述的基于类型库隐式生成代码的事实,以及 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 解释器的路径中;参见例如这个答案
  3. 导入您想要完成代码的模块。

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

在此输入图像描述

在此输入图像描述

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