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
相关产品推荐
相关产品推荐

