无法从tensorflow.python.eager导入def_function问题求助
解决Keras导入时的ImportError: cannot import name 'def_function'问题
错误日志
Traceback (most recent call last): File "<string>", line 1, in <module> File "/Users/ice/miniconda3/lib/python3.10/site-packages/keras/__init__.py", line 4, in <module> from keras.api import DTypePolicy File "/Users/ice/miniconda3/lib/python3.10/site-packages/keras/api/__init__.py", line 7, in <module> from keras.api import _tf_keras File "/Users/ice/miniconda3/lib/python3.10/site-packages/keras/api/_tf_keras/__init__.py", line 1, in <module> from keras.api._tf_keras import keras File "/Users/ice/miniconda3/lib/python3.10/site-packages/keras/api/_tf_keras/keras/__init__.py", line 7, in <module> from keras.api import activations File "/Users/ice/miniconda3/lib/python3.10/site-packages/keras/api/activations/__init__.py", line 7, in <module> from keras.src.activations import deserialize File "/Users/ice/miniconda3/lib/python3.10/site-packages/keras/src/__init__.py", line 1, in <module> from keras.src import activations File "/Users/ice/miniconda3/lib/python3.10/site-packages/keras/src/activations/__init__.py", line 3, in <module> from keras.src.activations.activations import elu File "/Users/ice/miniconda3/lib/python3.10/site-packages/keras/src/activations/activations.py", line 1, in <module> from keras.src import backend File "/Users/ice/miniconda3/lib/python3.10/site-packages/keras/src/backend/__init__.py", line 9, in <module> from keras.src.backend.common.dtypes import result_type File "/Users/ice/miniconda3/lib/python3.10/site-packages/keras/src/backend/common/__init__.py", line 2, in <module> from keras.src.backend.common.dtypes import result_type File "/Users/ice/miniconda3/lib/python3.10/site-packages/keras/src/backend/common/dtypes.py", line 5, in <module> from keras.src.backend.common.variables import standardize_dtype File "/Users/ice/miniconda3/lib/python3.10/site-packages/keras/src/backend/common/variables.py", line 11, in <module> from keras.src.utils.module_utils import tensorflow as tf File "/Users/ice/miniconda3/lib/python3.10/site-packages/keras/src/utils/__init__.py", line 1, in <module> from keras.src.utils.audio_dataset_utils import audio_dataset_from_directory File "/Users/ice/miniconda3/lib/python3.10/site-packages/keras/src/utils/audio_dataset_utils.py", line 4, in <module> from keras.src.utils import dataset_utils File "/Users/ice/miniconda3/lib/python3.10/site-packages/keras/src/utils/dataset_utils.py", line 9, in <module> from keras.src import tree File "/Users/ice/miniconda3/lib/python3.10/site-packages/keras/src/tree/__init__.py", line 1, in <module> from keras.src.tree.tree_api import assert_same_structure File "/Users/ice/miniconda3/lib/python3.10/site-packages/keras/src/tree/tree_api.py", line 6, in <module> from keras.src.tree import optree_impl as tree_impl File "/Users/ice/miniconda3/lib/python3.10/site-packages/keras/src/tree/optree_impl.py", line 17, in <module> from tensorflow.python.trackable.data_structures import ListWrapper File "/Users/ice/miniconda3/lib/python3.10/site-packages/tensorflow/python/trackable/data_structures.py", line 26, in <module> from tensorflow.python.eager import def_function ImportError: cannot import name 'def_function' from 'tensorflow.python.eager' (unknown location)
解决方案
彻底清理残留依赖
先完全卸载已安装的TensorFlow和Keras相关包:pip uninstall -y tensorflow keras keras-core keras-api手动删除conda环境中残留的包文件(避免缓存冲突):
rm -rf /Users/ice/miniconda3/lib/python3.10/site-packages/tensorflow* rm -rf /Users/ice/miniconda3/lib/python3.10/site-packages/keras*安装版本匹配的依赖
Keras 3.x与TensorFlow 2.15+兼容性最佳,指定版本安装:pip install tensorflow==2.15.0 keras==3.0.5若需使用旧版本组合,可参考官方兼容性矩阵调整版本号。
确认环境一致性
检查当前使用的Python解释器是否为目标conda环境:which python输出应指向
/Users/ice/miniconda3/bin/python,避免全局包与conda环境包冲突。验证安装结果
安装完成后运行以下代码测试:import tensorflow as tf from tensorflow import keras print(f"TensorFlow版本: {tf.__version__}") print(f"Keras版本: {keras.__version__}")无报错则说明安装成功。
内容的提问来源于stack exchange,提问作者keyboardboi37
相关产品推荐
相关产品推荐

