最近发布了TensorFlow 2.8,我一出来就安装了它。我确实需要它来支持更高的NumPy版本和一些新功能。然而,在我的conda环境中安装了它之后,python3 -m pip install --upgrade tensorflow
PyCharm和VSCode都无法解析导入的from tensorflow.keras import ...
。
导入本身似乎在运行时工作,但由于导入无法解析,我无法使用代码完成、可视化函数签名等。有人遇到过类似的问题吗?
所有的东西都可以在TF2.7下工作--我以前的版本。
注意:我使用的是Python 3.8
Vs代码x1c 0d1x
物理魔咒
我试着通过PyCharm解释器标签检查版本,这是我看到的。由于某种原因,PyCharm不知道有2.0之后的版本(我在那个环境中安装了最新版本的pip)。我猜这是相关的,但不知道该怎么做。
8条答案
按热度按时间ttvkxqim1#
我遇到了同样的问题,通过将其导入为
qnakjoqk2#
这是当前版本的tensorflow中的一个bug,如this issue中所述。
您可以通过以下任一方法解决此问题
1.按照引用问题的回答中所述修改文件
site-packages/tensorflow/__init__.py
,或者1.使用
import keras.api._v2.keras as keras
,因为这看起来就是tensorflow加载的包本身(尽管这里需要引用受保护的成员_v2
,这违反了python的约定)。这里的原因是tensorflow试图以一种懒惰的方式加载keras模块,这意味着它只保留了对模块的引用,直到模块被使用为止,只有到那时keras模块才会被实际加载,因此IDE只知道tensorflow对keras模块的引用,而不知道它的内容。
cu6pst1q3#
我在Google Colab中也发现了这个问题。虽然运行代码时运行正常。这只是IDE的一个抱怨,据说它找不到导入。非常奇怪。我希望TensorFlow团队的人尽快提供反馈。
pepwfjgg4#
消退中
以及
是不同的。
第一个需要
tensorflow
具有keras
属性,在类型检查期间静态地具有正确的类型。但是第二个需要
tensorflow.__path__
在类型检查期间静态地包含keras
模块。顺便说一句,对于
from tensorflow import keras
:如果tensorflow
具有keras
属性,则使用该属性,否则将keras
作为子模块导入。理论上,第二种方法应该只适用于
2.2.0 <= TF < 2.6.0
,2.2.0 <= TF < 2.6.0
有tensorflow/keras
文件夹,因为根据TF 2.6 Release Log,tensorflow/keras
应该在TF 2.6中删除,否则from tensorflow import keras
(由keras
PIP包支持的tensorflow.keras
)将不同于import tensorflow.keras as keras
(由tensorflow/python/keras
支持的tensorflow/keras
)。然而,事实上,第二种方法适用于
2.2.0 <= TF < 2.8.0
,因为tensorflow/keras
直到TF 2.8才被删除。有趣的是,tensorflow/python/keras
还没有被删除(Release 2.9.1),这违反了TF 2.6 Release Log中的声明,即"......将在未来的版本(2.7)中被删除"。由于TF 2.5中引入的keras延迟加载,
TF >= 2.5.0
的第一个错误被破坏了,虽然相关的提交已经被合并到master分支中,但还没有被修复(Release 2.9.1)。参见https://github.com/tensorflow/tensorflow/pull/54104和https://github.com/tensorflow/tensorflow/commit/e65b68a0914408118995d2f8b55c4286859362f8
另请参见www.example.comhttps://github.com/tensorflow/tensorflow/pull/54104#issuecomment-1067102133
yquaqz185#
我在tensorflow-macos 2.10.0中就遇到了这种情况。
gz5pxeao6#
这是this post in GitHub显示的模式。我得到了相同的。忽略它,因为代码仍然运行,但宁愿没有黄色。我希望来自张流的人可以插话。:)
cidc1ykv7#
这一条对我很有效:
t2a7ltrp8#
您可以在tensorflow目录中创建指向keras源代码的符号链接,如下所示: