You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法从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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 01:02:04