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

运行Streamlit应用时遇ImportError:无法从tensorflow.python导入'tf2'

解决ImportError: cannot import name 'tf2' from 'tensorflow.python'问题

问题核心

你运行Streamlit应用时触发的导入错误,本质是Python、TensorFlow、Keras、Streamlit的版本组合完全不兼容:

  • TensorFlow 2.3.0仅支持Python 3.5~3.8,你的Python版本是3.10.0,超出官方支持范围
  • Keras 2.6.0是TensorFlow 2.6.x的内置配套版本,和TensorFlow 2.3.0的内部模块结构不匹配,导致tf2模块引用失败
  • Streamlit 1.11.0与过旧的TensorFlow 2.3.0存在底层依赖冲突

(补充:从代码截图可见你导入了keras.models和streamlit,报错截图显示错误起源于Keras导入TensorFlow内部模块的环节)

可行解决方案

方案1:构建兼容版本环境(推荐)

创建新虚拟环境,安装互相匹配的版本组合:

  • Python 3.8.x(TensorFlow 2.3.0支持的最高Python版本)
  • TensorFlow 2.3.0
  • Keras 2.4.3(与TF2.3兼容的独立Keras版本)
  • Streamlit 1.11.0(或降级到1.8.0以适配旧TF)

执行命令:

# 用conda创建虚拟环境(也可用venv)
conda create -n tf-streamlit-env python=3.8
conda activate tf-streamlit-env

# 安装指定版本依赖
pip install tensorflow==2.3.0 keras==2.4.3 streamlit==1.11.0

方案2:升级TensorFlow适配Python3.10

若不想更换Python版本,升级TensorFlow到支持Python3.10的最低版本(TF2.6.0及以上),同时保持Keras与TF版本一致:

pip install --upgrade tensorflow==2.6.0 keras==2.6.0 streamlit==1.11.0

注意:升级后需检查代码中是否存在TF2.3到TF2.6的API变更,部分旧代码可能需要微调。

方案3:临时修复模块引用(不推荐)

如果必须保留当前版本,可尝试修改Keras内部的导入逻辑:
找到Keras中触发错误的文件,将from tensorflow.python import tf2替换为import tensorflow as tf,并通过tf.__version__做版本判断。但这种方法会破坏依赖结构,容易引发更多隐性问题,仅作为临时应急手段。

验证方法

  1. 激活调整后的虚拟环境
  2. 执行以下命令验证依赖兼容性:
python -c "import tensorflow as tf; import keras; import streamlit; print('依赖兼容,可正常运行')"
  1. 无报错后,重新启动Streamlit应用:
streamlit run your_app.py

内容的提问来源于stack exchange,提问作者นวพล สินมา

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 14:05:37