我在 Visual Studio Code 中遇到 PyLance 的问题,其中tensorflow.keras 命名空间无法被识别,导致 IntelliSense 和自动完成不完整。看来这个问题源于 TensorFlow 利用延迟加载功能 (_KerasLazyLoader) 推迟加载不必要的包,直到需要它们为止。
我搜索了有关该主题的现有问题,但我发现的最新讨论可以追溯到 2023 年底。此外,提出的解决方案主要涉及从长远来看可能不可靠的解决方法。
是否有官方解决方案来确保PyLance正确识别tensorflow.keras命名空间?我无法想象延迟加载通常会破坏 VSCode 智能感知(尽管我肯定是错的)。或者,是否有任何可靠的解决方法在未来的更新中不太可能被破坏?任何见解或指导将不胜感激。
软件: MacOS 索诺玛 14.1.2 Python 3.12 张量流2.16.1
参考之前发布的问题/问题:
我在上面的链接中尝试了几种解决方案,但它们对我不起作用。其中一些可能需要一些我需要做但我没有做的额外配置(例如,在tensorflow中引用了_typing。init但没有定义_typing - 可能已经过时)。
在Python 3.12/tensorflow 2.16.1的情况下,
这个问题中添加到
tensorflow/__init__.py
的代码需要更改为
if _typing.TYPE_CHECKING:
from tensorflow_estimator.python.estimator.api._v2 import estimator as estimator
from keras._tf_keras import keras
from keras._tf_keras.keras import losses
from keras._tf_keras.keras import metrics
from keras._tf_keras.keras import optimizers
from keras._tf_keras.keras import initializers