HOME

Maneki Pipeline

ゲーム開発のためのプロシージャル

hythonのオートコンプリートと型ヒント

hythonのオートコンプリートを利用するための流れとLumaPicturesがpipで配布してくれている型ヒントのためのパッケージについて

本稿はPycharm環境でhouパッケージのオートコンプリートを有効にする方法とtypes-houdiniパッケージで型ヒントを有効にする方法です。

環境

Pycharm 2025.2.4
Houdini Indie 21.0.512
HoudiniFX 21.0.512

Pycharmでhouパッケージのオートコンプリートを有効にする

SideFXが提供しているHoudini環境は丁寧に環境準備の対応をしてくれており、インタプリタを設定するとそれ用のパッケージにパスが通りオートコンプリートが有効になる。

インタプリタをhython.exeに指定

しかし、Pycharm環境ではデフォルトの設定ではパスを通しただけではhouパッケージのオートコンプリートは有効にならない。

パスを通すだけでは一見、オートコンプリートは有効にならない
ちなみにpdgパッケージはちゃんとオートコンプリートしてくれる

これはPycharmの環境設定の影響であり、大きすぎるインテリセンス用のファイルに対してインデックス付けを放棄してしまうのが原因である。

設定を変更してオートコンプリートを有効にする。

Pycharmのオートコンプリートの容量制限を緩和するとパスを通しただけでPycharm環境でオートコンプリートを利用できる。

ヘルプから カスタムプロパティの編集の実行

プロパティファイルが開くのでインテリジェンスの最大サイズを設定する。

idea.max.intellisense.filesize=10000
インテリジェンスの最大サイズを変更

再起動するとhouパッケージのオートコンプリートも利用可能になる。

houパッケージのオートコンプリートが有効になる

Stubで型ヒントを追加する

インタプリタを読み込むとオートコンプリートが利用可能になるが、型ヒントは無い

pwdなどの返り値はAnyとして認識される

Python3にはStubという機能でオートコンプリートや型定義を行う方法があり、このための設定ファイルをLumaPicturesがpipで配布してくれている。

github| LumaPictures| cg-stubs
https://github.com/LumaPictures/cg-stubs

Stubについて

stubはPython3の型ヒントのための仕組みで型のチェックやオートコンプリートに利用できる。Pycharmも認識してくれる。

Python| Stub files
https://typing.python.org/en/latest/spec/distributing.html

拡張子「(モジュール名).pyi」、もしくはパッケージ「(パッケージ名)-stubs」という名前で定義する。
外部ファイルとして型ヒントを作成できるのでHoudiniやMayaといった組み込みPythonの型ヒントを後付で作成することができる。

types-houdiniを利用する

以下はtypes-houdiniを使ってPycharmで型ヒントができるようになるまでの流れ。

pipでtypes-hodiniをインストール

pipで配布されているスタブパッケージをインストール

型ヒントを読み込み、hou.pwdなどの返り値がNode型としてして認識される

インスタンスの定義ではない、返り値等の型を認識してくれるようになる

※stubsは動作に影響は無いので、今回の流れではHoudiniの実行環境に直でtypes-houdiniパッケージをインストールしています。
 環境が完全にクリーンな状態でなくなることを気になる場合はvenvなどにインストールしてパスを通すのが良いかと思います。

補足:types-houdiniのバージョン

types-houdiniはhoudiniのバージョンに合わせたいくつかの配布バージョンがあるが自分のバージョンに合わせたものを使うのが良さそう。

Houdiniに合わせた配布バージョンがある

というのも、19.5環境で21を入れたところ型ヒントが有効になりませんでした。
その環境ではtype-houdini 19.5.1をインストールした場合は正しく認識してくれました。

補足:luma picturesはMayaのstubも配布している

自分は試していないがMayaやUSD、SubstancePainterなど用のstubも配布してくれている。
型ヒントを使えるとかなり使いやすくなるので試してみては (重ね重ねになりますが自分は試していないので動作の保証はできかねます)

github| LumaPictures| cg-stubs
https://github.com/LumaPictures/cg-stubs


luma picturesに感謝

fish_ball

プロシージャル魚類