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

Mac M2 Max环境下TensorFlow结合Transformers报错求助

问题:ModuleNotFoundError: No module named 'keras.engine'

在MacBook Pro M2 Max设备上开发Python项目,尝试结合TensorFlow与Hugging Face Transformers使用,已通过pip3 install transformers tensorflow安装相关依赖,但运行代码时出现ModuleNotFoundError: No module named 'keras.engine'错误。

运行代码片段

import os
from dotenv import load_dotenv
from database import create_connection
import mysql.connector
# from user_interface import user_interface
from flask import Flask, request, jsonify
import pandas as pd
import mysql.connector
from transformers import BertTokenizer, TFBertForSequenceClassification
import tensorflow as tf

# Load environment variables from .env file
load_dotenv()

print(tf.__version__)

app = Flask(__name__)

# Get environment variables
host = os.getenv('DB_HOST')
user = os.getenv('DB_USER')
password = os.getenv('DB_PASSWORD')
db_name = os.getenv('DB_NAME')

connection = create_connection(host, user, password, db_name)

# Load the model and tokenizer
# model = TFBertForSequenceClassification.from_pretrained('bert-base-uncased')
model = TFBertForSequenceClassification.from_pretrained('bert-base-uncased')
tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')

# Define categories

报错信息

Traceback (most recent call last):
  File "/opt/homebrew/lib/python3.11/site-packages/transformers/utils/import_utils.py", line 1076, in _get_module
    return importlib.import_module("." + module_name, self.__name__)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/homebrew/Cellar/python@3.11/3.11.3/Frameworks/Python.framework/Versions/3.11/lib/python3.11/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<frozen importlib._bootstrap>", line 1206, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1178, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1149, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 690, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "/opt/homebrew/lib/python3.11/site-packages/transformers/models/bert/modeling_tf_bert.py", line 38, in <module>
    from ...modeling_tf_utils import (
  File "/opt/homebrew/lib/python3.11/site-packages/transformers/modeling_tf_utils.py", line 70, in <module>
    from keras.engine import data_adapter
ModuleNotFoundError: No module named 'keras.engine'

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/Users/pedrospecter/Downloads/work/cw1/autonomous_ai/main.py", line 9, in <module>
    from transformers import BertTokenizer, TFBertForSequenceClassification
  File "<frozen importlib._bootstrap>", line 1231, in _handle_fromlist
  File "/opt/homebrew/lib/python3.11/site-packages/transformers/utils/import_utils.py", line 1067, in __getattr__
    value = getattr(module, name)
            ^^^^^^^^^^^^^^^^^^^^^
  File "/opt/homebrew/lib/python3.11/site-packages/transformers/utils/import_utils.py", line 1066, in __getattr__
    module = self._get_module(self._class_to_module[name])
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/homebrew/lib/python3.11/site-packages/transformers/utils/import_utils.py", line 1078, in _get_module
    raise RuntimeError(
RuntimeError: Failed to import transformers.models.bert.modeling_tf_bert because of the following error (look up to see its traceback):
No module named 'keras.engine'

解决建议

  • 核心原因:TensorFlow 2.16及以上版本重构了Keras模块,移除了keras.engine路径,而旧版本Transformers尚未适配该变化,导致导入失败。

  • 方案1:升级Transformers到兼容版本
    优先选择此方案,最新稳定版Transformers已适配新版TensorFlow的Keras结构:

    pip3 install --upgrade transformers
    
  • 方案2:降级TensorFlow到兼容版本
    如果无法升级Transformers,可将TensorFlow降级到2.15.x版本(此版本仍保留旧版Keras路径):

    pip3 install tensorflow==2.15.0
    
  • 方案3:手动安装独立Keras(不推荐)
    若需保留新版TensorFlow,可单独安装Keras并调整导入逻辑,但可能引发其他兼容性问题:

    pip3 install keras
    

    在代码开头添加:

    import sys
    import keras
    sys.modules['keras.engine'] = keras.engine
    

内容的提问来源于stack exchange,提问作者thelittlemaster

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 05:43:21