概要
pyright で tensorflow.keras が解決できないときのワークアラウンドを紹介します
本当は公式に対応していただきたいところです
環境
- macOS 14.0
- Python 3.11.6
- tensorflow 2.14.0
site-packages/tensorflow/init.py を修正
-
vim $(pipenv --venv)/lib/python3.11/site-packages/tensorflow/__init__.py
392 行目あたりの _keras_module
の定義を以下のように分岐させます
import typing as _typing
if _typing.TYPE_CHECKING:
from keras.api._v2 import keras
else:
_keras_module = "keras.api._v2.keras"
_keras = _LazyLoader("keras", globals(), _keras_module)
_module_dir = _module_util.get_parent_dir_for_name(_keras_module)
if _module_dir:
_current_module.__path__ = [_module_dir] + _current_module.__path__
setattr(_current_module, "keras", _keras)
keras フォルダを tensorflow 内へフォルダへコピー
- cp -pr $(pipenv --venv)/lib/python3.11/site-packages/keras $(pipenv --venv)/lib/python3.11/site-packages/tensorflow/
あとは pyright を再起動すれば OK です
エディタの再起動でも OK です
最後に
面倒ですがこれで tensorflow.keras として pyright が認識してくれて補完やジャンプなどが行なえます
ちなみに pipenv update など行い tensorflow パッケージが更新された場合は再度同じ手順を実施する必要があります
0 件のコメント:
コメントを投稿