脚本:
import tensorflow.python
tensorflow.python
得出AttributeError
:
AttributeError: module 'tensorflow' has no attribute 'python'
这怎么可能发生? from tensorflow import python
和from tensorflow.python import keras
一样正常工作。我以为自己了解Python导入机制的基础知识,但是我不了解在什么情况下import x.y
会成功,但是没有在命名空间中添加x.y
。
答案 0 :(得分:1)
如果您查看tensorflow/__init__.py
,则会看到它在末尾显式删除了名称python
:
# These symbols appear because we import the python package which
# in turn imports from tensorflow.core and tensorflow.python. They
# must come from this module. So python adds these symbols for the
# resolution to succeed.
# pylint: disable=undefined-variable
del python
del core
# pylint: enable=undefined-variable
因此,tensorflow.python
无法访问,因为模块对象python
的属性tensorflow
已被删除。不过,您仍然可以从此处导入内容:
from tensorflow.python import ops # Works
如果您想专门访问tensorflow.python
模块,则不能使用该名称,但是也可以将其导入另一个名称:
from tensorflow import python as tfpython
print(tfpython)
# <module 'tensorflow.python' from '...'>