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

PyCharm中Keras与TensorFlow安装后运行报错求助

股票价格分析代码运行报错及解决方法

在PyCharm中通过解释器及终端安装Keras和TensorFlow后,运行股票价格分析代码时接连出现两个报错:先是protobuf相关TypeError,处理后又出现numpy的AttributeError。

运行代码

import pandas as pd
import numpy as np

import matplotlib.pyplot as plt

from matplotlib.pylab import rcParams
rcParams['figure.figsize']=20,10
from keras import Sequential
from keras import LSTM,Dropout,Dense

from sklearn.preprocessing import MinMaxScaler
df=pd.read_csv("/Users/apple/Desktop/NSE-Tata-Global-Beverages-Limited.csv")
df.head()
df["Date"]=pd.to_datetime(df.Date,format="%Y-%m-%d")
df.index=df['Date']

plt.figure(figsize=(16,8))
plt.plot(df["Close"],label='Close Price history')

初始报错(protobuf相关TypeError)

Users/apple/PycharmProjects/pythonProject4/venv/bin/python /Users/apple/PycharmProjects/pythonProject4/main.py 
Traceback (most recent call last):
File "/Users/apple/PycharmProjects/pythonProject4/main.py", line 9, in <module>
from keras import Sequential
File "/Users/apple/PycharmProjects/pythonProject4/venv/lib/python3.11/site-packages/keras/__init__.py", line 21, in <module>
from keras import models
File "/Users/apple/PycharmProjects/pythonProject4/venv/lib/python3.11/site-packages/keras/models/__init__.py", line 18, in <module>
from keras.engine.functional import Functional
File "/Users/apple/PycharmProjects/pythonProject4/venv/lib/python3.11/site-packages/keras/engine/functional.py", line 24, in <module>
import tensorflow.compat.v2 as tf
File "/Users/apple/PycharmProjects/pythonProject4/venv/lib/python3.11/site-packages/tensorflow/__init__.py", line 24, in <module>
from tensorflow.python import *
File "/Users/apple/PycharmProjects/pythonProject4/venv/lib/python3.11/site-packages/tensorflow/python/__init__.py", line 75, in <module>
from tensorflow.core.framework.graph_pb2 import *
File "/Users/apple/PycharmProjects/pythonProject4/venv/lib/python3.11/site-packages/tensorflow/core/framework/graph_pb2.py", line 16, in <module>
from tensorflow.core.framework import node_def_pb2 as tensorflow_dot_core_dot_framework_dot_node__def__pb2
File "/Users/apple/PycharmProjects/pythonProject4/venv/lib/python3.11/site-packages/tensorflow/core/framework/node_def_pb2.py", line 16, in <module>
from tensorflow.core.framework import attr_value_pb2 as tensorflow_dot_core_dot_framework_dot_attr__value__pb2
File "/Users/apple/PycharmProjects/pythonProject4/venv/lib/python3.11/site-packages/tensorflow/core/framework/attr_value_pb2.py", line 16, in <module>
from tensorflow.core.framework import tensor_pb2 as tensorflow_dot_core_dot_framework_dot_tensor__pb2
File "/Users/apple/PycharmProjects/pythonProject4/venv/lib/python3.11/site-packages/tensorflow/core/framework/tensor_pb2.py", line 16, in <module>
from tensorflow.core.framework import resource_handle_pb2 as tensorflow_dot_core_dot_framework_dot_resource__handle__pb2
File "/Users/apple/PycharmProjects/pythonProject4/venv/lib/python3.11/site-packages/tensorflow/core/framework/resource_handle_pb2.py", line 36, in <module>
_descriptor.FieldDescriptor(
File "/Users/apple/PycharmProjects/pythonProject4/venv/lib/python3.11/site-packages/google/protobuf/descriptor.py", line 560, in __new__
_message.Message._CheckCalledFromGeneratedFile()
TypeError: Descriptors cannot not be created directly.
If this call came from a _pb2.py file, your generated code is out of date and must be regenerated with protoc >= 3.19.0.
 If you cannot immediately regenerate your protos, some other possible workarounds are:
1. Downgrade the protobuf package to 3.20.x or lower.
2. Set PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python (but this will use pure-Python parsing and will be much slower).

Process finished with exit code 1

后续报错(numpy相关AttributeError)

/Users/apple/PycharmProjects/pythonProject4/venv/bin/python  /Users/apple/PycharmProjects/pythonProject4/main.py 
/Users/apple/PycharmProjects/pythonProject4/venv/lib/python3.11/site-packages/tensorflow/python/framework/dtypes.py:471: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.
  _np_qint8 = np.dtype([("qint8", np.int8, 1)])
/Users/apple/PycharmProjects/pythonProject4/venv/lib/python3.11/site-packages/tensorflow/python/framework/dtypes.py:472: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.
  _np_quint8 = np.dtype([("quint8", np.uint8, 1)])
/Users/apple/PycharmProjects/pythonProject4/venv/lib/python3.11/site-packages/tensorflow/python/framework/dtypes.py:473: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.
  _np_qint16 = np.dtype([("qint16", np.int16, 1)])
/Users/apple/PycharmProjects/pythonProject4/venv/lib/python3.11/site-packages/tensorflow/python/framework/dtypes.py:474: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.
  _np_quint16 = np.dtype([("quint16", np.uint16, 1)])
/Users/apple/PycharmProjects/pythonProject4/venv/lib/python3.11/site-packages/tensorflow/python/framework/dtypes.py:475: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.
_np_qint32 = np.dtype([("qint32", np.int32, 1)])
/Users/apple/PycharmProjects/pythonProject4/venv/lib/python3.11/site-packages/tensorflow/python/framework/dtypes.py:490: FutureWarning: In the future `np.object` will be defined as the corresponding NumPy scalar.  (This may have returned Python scalars in past versions.
(np.object, string),
Traceback (most recent call last):
File "/Users/apple/PycharmProjects/pythonProject4/main.py", line 9, in <module>
  from keras import Sequential
File "/Users/apple/PycharmProjects/pythonProject4/venv/lib/python3.11/site-packages/keras/__init__.py", line 21, in <module>
  from keras import models
File "/Users/apple/PycharmProjects/pythonProject4/venv/lib/python3.11/site-packages/keras/models/__init__.py", line 18, in <module>
  from keras.engine.functional import Functional
File "/Users/apple/PycharmProjects/pythonProject4/venv/lib/python3.11/site-packages/keras/engine/functional.py", line 24, in <module>
  import tensorflow.compat.v2 as tf
File "/Users/apple/PycharmProjects/pythonProject4/venv/lib/python3.11/site-packages/tensorflow/__init__.py", line 24, in <module>
  from tensorflow.python import *
File "/Users/apple/PycharmProjects/pythonProject4/venv/lib/python3.11/site-packages/tensorflow/python/__init__.py", line 84, in <module>
  from tensorflow.python.framework.framework_lib import *
File "/Users/apple/PycharmProjects/pythonProject4/venv/lib/python3.11/site-packages/tensorflow/python/framework/framework_lib.py", line 73, in <module>
  from tensorflow.python.framework.ops import Graph
File "/Users/apple/PycharmProjects/pythonProject4/venv/lib/python3.11/site-packages/tensorflow/python/framework/ops.py", line 39, in <module>
  from tensorflow.python.framework import dtypes
File "/Users/apple/PycharmProjects/pythonProject4/venv/lib/python3.11/site-packages/tensorflow/python/framework/dtypes.py", line 490, in <module>
(np.object, string),
  ^^^^^^^^^
File "/Users/apple/PycharmProjects/pythonProject4/venv/lib/python3.11/site-packages/numpy/__init__.py", line 284, in __getattr__
raise AttributeError("module {!r} has no attribute "
AttributeError: module 'numpy' has no attribute 'object'. Did you mean: 'object_'?

Process finished with exit code 1

解决方法

针对protobuf报错

  • 降级protobuf到3.20.x版本,在PyCharm终端执行:
    pip install protobuf==3.20.3
    
  • 或者设置环境变量(性能会下降):
    在PyCharm的运行配置中添加环境变量PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python,或在终端执行:
    export PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python
    

针对numpy报错

该问题源于高版本numpy(1.24+)移除了np.object,而当前TensorFlow版本不兼容,解决方式二选一:

  • 降级numpy到兼容版本,比如1.23.5:
    pip install numpy==1.23.5
    
  • 升级TensorFlow到支持高版本numpy的版本(建议升级到2.10+,同时Keras 2.10+已整合到TensorFlow中):
    pip install --upgrade tensorflow keras
    

终极方案:创建兼容的虚拟环境

若单独调整版本仍有问题,建议重新创建虚拟环境并安装指定版本的依赖:

  1. 新建并激活虚拟环境
  2. 执行以下命令安装兼容版本:
    pip install tensorflow==2.10.0 keras==2.10.0 numpy==1.23.5 pandas==1.5.3 matplotlib==3.6.2 scikit-learn==1.1.3 protobuf==3.20.3
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 22:55:16