2017-02-16 8 views
2

app = win32com.client.Dispatch('Some.Application')を使用している場合、PyCharmでコード補完を実行する方法はありますか? APIのドキュメントからすべてを再入力(またはコピー・ペースト)しなければならないのはやや面倒なので、skeletonsを作成することになります。特に、私が.tlbファイルを提供できる場合、COM経由で提供されるインタフェースについてPyCharmに知らせる他の方法はありませんか?または、少なくとも何らかの方法で、このようなスケルトン(またはラッピングモジュール?)をTypeLibから自動的に生成しますか?PyCharmでCOMプログラミングのコード補完を取得するには?

+1

[win32com-autocompletionの使い方](https://stackoverflow.com/q/26990655/321973) - 私は数年後に同様の質問をもう一度やり直す傾向があることに気付きました。しかし、[tag:ipython]と 'EnsureDispatch'について質問してください。 –

答えて

3

PyCharmがランタイムタイプappを知る方法がないので、appにコード補完を直接期待するべきではありません。少なくとも型ライブラリからコードを生成する組み込みのサポートを追加することを決定するまでは、そうではありません。

win32comは、the first part of this answerに記載されているようにタイプライブラリに基づいて暗黙的にコードを生成し、Pythonのタイプヒントのサポートによって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で、このアプローチを使用して、以下のスクリーンショットで

、:

enter image description here

enter image description here

、汚い感じのほかに、このアプローチは、生成された関連の種類に依存し、コード補完はオブジェクトによって公開されたメソッドに限られているので、実際にはその有用性はいくらか限定されるかもしれないと思います。特に、コードを操作しているすべての人がコードを生成する必要があります。そうしないと、注釈によってNameErrorが生成されます。個人的には、実装プロセスの探索的な部分にJupyterを使用することをお勧めします。the answer mentioned aboveで概説されている最小限の調整で、Jupyterを拡張してwin32comで完全なコード補完を行うことができます。

+0

最高のオプションのようなサウンド、ありがとう –

関連する問題