M1 Pro Mac的PyCharm中导入TensorFlow/Keras报错求助
问题场景
正在学习机器学习,尝试基于Kaggle任务搭建一个3输入1输出的单层网络,使用以下代码导入TensorFlow和Keras:
from tensorflow import keras from tensorflow.keras import layers # Create a network with 1 linear unit model = keras.Sequential([ layers.Dense(unit=1, input_shape=[3]) ])
注:代码中unit为笔误,正确参数名应为units,但这并非当前报错的诱因。
运行代码后出现如下错误:
"/Users/ahmedhamadto/PycharmProjects/Deep Learning/venv/bin/python" "/Users/ahmedhamadto/PycharmProjects/Deep Learning/main.py" Traceback (most recent call last): File "/Users/ahmedhamadto/PycharmProjects/Deep Learning/main.py", line 1, in <module> from tensorflow import keras File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/tensorflow/__init__.py", line 37, in <module> from tensorflow.python.tools import module_util as _module_util File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/tensorflow/python/__init__.py", line 37, in <module> from tensorflow.python.eager import context File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/tensorflow/python/eager/context.py", line 29, in <module> from tensorflow.core.framework import function_pb2 File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/tensorflow/core/framework/function_pb2.py", line 7, in <module> from google.protobuf import descriptor as _descriptor File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/google/protobuf/descriptor.py", line 47, in <module> from google.protobuf.pyext import _message ImportError: dlopen(/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/google/protobuf/pyext/_message.cpython-310-darwin.so, 0x0002): symbol not found in flat namespace (__ZNK6google8protobuf10TextFormat21FastFieldValuePrinter19PrintMessageContentERKNS0_7MessageEiibPNS1_17BaseTextGeneratorE) Process finished with exit code 1
设备为M1 Pro MacBook Pro。
解决方案
该错误源于M1芯片架构下TensorFlow与protobuf版本不兼容,或使用了非原生适配的安装方式,可按以下步骤解决:
- 先卸载当前的TensorFlow和protobuf:
pip uninstall tensorflow protobuf -y - 推荐用conda安装适配M1的TensorFlow(自动处理依赖兼容):
- 确保已安装支持ARM架构的Miniforge或M1版本Anaconda
- 创建并激活新环境:
conda create -n tf_env python=3.9 conda activate tf_env - 安装TensorFlow相关包:
conda install -c apple tensorflow-deps pip install tensorflow-macos tensorflow-metal
- 若坚持用pip安装,需指定兼容M1的protobuf版本:
pip install tensorflow-macos tensorflow-metal pip install protobuf==3.20.3 - 验证安装:在Python环境中运行
import tensorflow as tf,无报错则安装成功,之后修正代码中的unit为units即可重新运行网络代码。
内容的提问来源于stack exchange,提问作者Ahmed
相关产品推荐
相关产品推荐

