我安装了适用于Windows的Python扩展程序。在PythonWin IDE中,我可以在Automation对象(特别是使用win32com.client.Dispatch
创建的对象)上获得自动完成功能:
如何在VS Code中获得相同的自动完成功能?
我正在使用Microsoft Python extension。
Python Windows Extensions有一个名为COM Makepy的工具,它显然生成了Automation对象的Python表示,但我无法弄清楚如何使用它。
更新
显然,Microsoft Python扩展使用Jedi进行自动完成。
我已经在Github上的扩展项目中提交了issue。
请注意,我一般在Python中使用Intellisense;它只是我缺少的自动化对象上的Intellisense。
答案 0 :(得分:3)
我不认为您使用PythonWin
显示的示例在VS Code中很容易重现。 win32com
本身的快速入门指南(下面引用)说,它只能通过COM浏览器或产品文档(在本例中为Word)。后者不太可能,因此PythonWin
可能正在使用COM浏览器来查找属性。由于PythonWin
和win32com
属于同一个包,因此PythonWin
内置COM浏览器并非不太可能。
我如何知道哪些方法和属性可用?
好问题。这很难!您需要使用文档 产品,或可能是COM浏览器。但请注意COM浏览器 通常依赖于这些对象在某些情况下注册自己 方式,许多对象不这样做。你只是希望知道。
如果你想从VS Code plugin获得相同的功能,则必须在Jedi(VS Code插件的智能感知)中实现COM浏览器。
修改:我找到了this建议,关于如何找到这些隐藏属性的自动完成功能:
这些包装器会做各种使静态分析变得困难的事情, 除非我们特殊情况他们。这样的一般解决方案 case是运行到断点并在实时运行时状态下工作。 然后,自动完成符应包括完整的符号列表 因为它会检查运行时。
答案 1 :(得分:2)
评分
我已经在VSCode中确认了您的问题,尽管IntelliSense可能正常工作。注意Ctrl + Space会调用预定义变量的建议:
但是,默认情况下,win32com.client
似乎没有可用的公共属性。这可能就是IntelliSense似乎不起作用的原因。
测试
拥有{3.6}的Python {3}},我在Jupyter笔记本,IPython控制台和本机Python REPL中确认了以下代码:
import win32com.client
app = win32com.client.Dispatch("Word.Application")
len(dir(app))
# 55
[x for x in dir(app) if not x.startswith("_")]
# []
此隐藏属性问题为installed win32com
。请在其他环境/ IDE中确认此测试。可能是您的环境或特定版本的PythonWin在全局命名空间中预加载某些变量。
参考
答案 2 :(得分:0)
我认为您的问题与定义Python interpreter
。
通过按{strong> python interpreter
或 VS Code
在f1
命令面板中执行ctrl+shift+p
命令,选择合适的Python解释器键。