2023年11月2日木曜日

Import "tensorflow.keras" could not be resolved 対策

Import "tensorflow.keras" could not be resolved 対策

概要

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 件のコメント:

コメントを投稿