2017-12-20 25 views
9

Windows用のPython拡張機能をインストールしました。 PythonWin IDEの中で私は、オートメーションオブジェクトのオートコンプリートを取得することができます(具体的には、win32com.client.Dispatchで作成されたオブジェクト):VSコードとPythonのオートメーションオブジェクトのオートコンプリート

PythonWin IDE with autocomplete

は、どのように私はVSのコードで同じオートコンプリートを得ることができますか?

私はMicrosoft Python extensionを使用しています。

Python Windows Extensionsには、AutomationオブジェクトのPython表現を生成するCOM Makepyというツールがありますが、使用方法を理解できません。

更新

どうやら、マイクロソフトPythonの拡張は、自動補完のためJediを使用しています。

私はGithubの拡張プロジェクトにissueを提出しました。

一般に、私はIntellisenseをPythonで持っています。私が紛失しているのは、Intellisense on Automationオブジェクトだけです。

+0

Windows Python拡張機能、Visual Studioコードを見てください。これは今のところ不可能と思われる。おそらく彼らがtypeshed(* .pyi)拡張をサポートし始めると、これらのものをマップする方が簡単になるでしょう –

答えて

3

PythonWinと表示されている例は、VSコードで簡単に再現できるとは思いません。 win32comのクイックスタートガイド(以下に引用)は、COMブラウザまたは製品のドキュメント(この場合はWord)でのみ可能であることを示しています。後者はありそうもないので、PythonWinはおそらくプロパティを見つけるためにCOMブラウザを使用しています。そしてPythonWinwin32comのでPythonWinはCOMブラウザを内蔵していること、その可能性は低いではない、同じパッケージに来る。

をメソッドとプロパティが用意されていた私が知っている方法は?

これはきつい! 製品のドキュメント、または場合によってはCOMブラウザを使用する必要があります。ただし、COMブラウザの は、通常、特定の ウェイに登録されているこれらのオブジェクトに依存しています。あなたはただ知りたいと思っています。あなたはVS Code pluginから同じ機能を望んでいた場合

は、COMのブラウザはJedi(VSコードのプラグインのインテリセンス)に実装しなければならないであろう。

編集:私はオートコンプリート、これらの隠された属性を見つけることができ、行うことができる方法について、this提案を見つけた:、これらのラッパーは、静的解析を困難にする様々な物事を行う

を ない限り、我々はそれらを特別なケースにしていた。そのような場合の一般的な解決方法は、ブレークポイントまで実行して、実行時の状態で動作させることです。 オートコンプリータは、ランタイムを検査するため、シンボル の完全なリストを含める必要があります。

会話は、Python IDE wingwideのメーリングリストからのものです。インテリセンスが正常に動作可能かもしれないが、私は、VSCodeであなたの問題を確認している

Auto-Completer Icons

+0

すみません、私はそれを逃しました。私はあなたの例を試してみました。それは私のためにうまくいきます。あなたは "app.Visible"だけを試してみましたか、それともその前にコードを試してみましたか( "app = win32com.client.Dispatch ...")?私のために、「app.Visible」部分を除くすべてが機能します。 –

+0

"app = win32com.client.Dispach ..."のIntelliSenseは機能しますか? –

+0

私はPyCharmで同じことを試みましたが、 'app'でもIntelliSenseを実行できませんでした。私は(私が間違っていれば私を修正してください)あなたの例で示したIntelliSenseは、すでに可能なパラメータを書いていて、IntelliSenseが記憶しているためにしか動作しないと思います。詳細については、pylangの回答を参照してください。 –

2

レビュー

:。彼らは、上記のアプローチを実施していること、見ることができますHere Ctrlキー+スペース事前に定義された変数のための提案を呼び出し注意:

enter image description here

ただし、デフォルトでwin32com.clientために利用可能なパブリック属性があるように表示されません。これは、IntelliSenseが動作していないように見える理由です。隠し属性の

import win32com.client 


app = win32com.client.Dispatch("Word.Application") 
len(dir(app)) 
# 55 
[x for x in dir(app) if not x.startswith("_")] 
# [] 

この問題はnot a newです:

テスト

のPython 3.6用のinstalled win32comを持って、私はJupyterノートブック、IPythonコンソールおよびネイティブのPython REPLに次のコードを確認しています。このテストは別の環境/ IDEで確認してください。あなたの環境や特定のバージョンのPythonWinは、グローバル名前空間内の特定の変数をあらかじめロードしている可能性があります。

参照のトラブルシューティングの自動補完問題の

+0

Python Extensions for Windowsには、 'makepy'ツールが付属しています。このツールは' c:¥Program Files¥Python36¥Lib¥site-packages¥win32com¥gen_py'に静的な定義を生成します。 –

0

私はあなたの問題はPython interpreterの定義に関連していると思います。

f1またはctrl+shift+pキーを押すことでVS Codeコマンドパレットにpython interpreterコマンドを実行することで、適切なPythonインタプリタを選択してください。

関連する問題