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

TensorFlow流式精度测试报错:_pywrap_tensorflow_internal.so未定义PyClass_Type

解决TensorFlow 1.6.0运行generate_streaming_test_wav时的PyClass_Type未定义错误

我在Ubuntu 16.04的Python 3.5虚拟环境里装了TensorFlow 1.6.0,跟着官方音频识别文档做流式精度测试,结果运行这条命令的时候栽了:

bazel run tensorflow/examples/speech_commands:generate_streaming_test_wav

直接报了无法加载TensorFlow原生运行时的错,核心问题是:

_pywrap_tensorflow_internal.so: undefined symbol: PyClass_Type

完整的报错回溯长这样:

INFO: Running command line: bazel-bin/tensorflow/examples/speech_commands/generate_streaming_test_wav
Traceback (most recent call last):
File "/home/jean_lin/.cache/bazel/_bazel_jean_lin/7ec2afa2cc3b112c8391a9677667186f/execroot/org_tensorflow/bazel-out/k8-opt/bin/tensorflow/examples/speech_commands/generate_streaming_test_wav.runfiles/org_tensorflow/tensorflow/python/pywrap_tensorflow.py", line 58, in <module>
from tensorflow.python.pywrap_tensorflow_internal import *
File "/home/jean_lin/.cache/bazel/_bazel_jean_lin/7ec2afa2cc3b112c8391a9677667186f/execroot/org_tensorflow/bazel-out/k8-opt/bin/tensorflow/examples/speech_commands/generate_streaming_test_wav.runfiles/org_tensorflow/tensorflow/python/pywrap_tensorflow_internal.py", line 28, in <module>
_pywrap_tensorflow_internal = swig_import_helper()
File "/home/jean_lin/.cache/bazel/_bazel_jean_lin/7ec2afa2cc3b112c8391a9677667186f/execroot/org_tensorflow/bazel-out/k8-opt/bin/tensorf...

折腾了一阵,总结出几个可行的解决方向:

1. 对齐Bazel编译的Python版本

PyClass_Type是Python 2专属的类型,Python 3已经移除了这个定义,所以大概率是Bazel默认用Python 2编译导致的版本不匹配。

你可以这么操作:

  • 先把环境变量指向你的Python 3.5虚拟环境,替换成你自己的虚拟环境路径:
    export PYTHON_BIN_PATH=/home/your_user/venv/bin/python3.5
    export PYTHON_LIB_PATH=/home/your_user/venv/lib/python3.5/site-packages
    
  • 进入TensorFlow源码目录,重新配置编译选项:
    ./configure
    
    配置过程中所有和Python相关的选项,都选择你虚拟环境里的路径,确认使用的是Python 3.5。
  • 重新编译目标后再运行:
    bazel build tensorflow/examples/speech_commands:generate_streaming_test_wav
    bazel run tensorflow/examples/speech_commands:generate_streaming_test_wav
    

2. 解决pip安装与源码编译的冲突

如果你之前用pip安装过TensorFlow,又用Bazel从源码运行目标,很容易出现依赖版本冲突。

解决步骤:

  • 先卸载虚拟环境里的TensorFlow:
    pip uninstall tensorflow
    
  • 回到TensorFlow源码目录,按照上面的方法重新配置编译,确保全程使用虚拟环境的Python 3.5。

3. 匹配Bazel版本

TensorFlow 1.6.0对Bazel版本有严格要求,过高或过低的版本都容易引发编译问题,官方推荐使用Bazel 0.11.0。

操作步骤:

  • 卸载现有Bazel:
    sudo apt-get remove bazel
    
  • 下载并安装0.11.0版本:
    wget https://github.com/bazelbuild/bazel/releases/download/0.11.0/bazel_0.11.0-linux-x86_64.deb
    sudo dpkg -i bazel_0.11.0-linux-x86_64.deb
    
  • 再重新配置编译TensorFlow的目标。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 03:51:22