如何在PyCharm中获得COM编程的codecompletion?

2024-10-02 22:35:37 发布

您现在位置:Python中文网/ 问答频道 /正文

当使用app = win32com.client.Dispatch('Some.Application')时,在PyCharm中有什么可行的方法来完成代码吗?从API文档中重新键入(或复制粘贴)所有内容是相当乏味的,创建skeletonsbe也是如此。有没有其他方法可以让PyCharm知道通过COM提供的接口,尤其是如果我可以提供一个.tlb文件的话?或者至少有什么方法可以自动生成这样的骨架(或者包装模块?)从类型库?在


Tags: 方法代码文档clientapiapp内容键入
1条回答
网友
1楼 · 发布于 2024-10-02 22:35:37

因为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的^{}使用这种方法:

enter image description here

enter image description here

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

相关问题 更多 >