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

GStreamer Python绑定安装后出现AttributeError问题求助

问题分析

安装GStreamer Python绑定后触发AttributeError: module 'gi' has no attribute 'require_version',从执行python3 -c "import gi; print(gi.__spec__)"的输出可以看出:Python正在加载当前gst-python源码目录下的gi模块,而非系统site-packages中完整的PyGObject gi模块——这个本地gi模块是gst-python源码里的部分实现,缺少require_version这类核心方法。

解决步骤

1. 立即退出gst-python源码目录

Python会优先搜索当前工作目录下的模块,先离开gst-python文件夹:

cd ~

之后测试import gi:

python3 -c "import gi; gi.require_version('Gst', '1.0'); print('Success')"

如果正常输出Success,说明问题完全是当前目录干扰导致的。

2. 修正安装流程(确保全局/局部安装生效)

若退出目录后仍报错,说明安装过程未正确将文件部署到指定路径,可重新执行安装,注意以下要点:

  • PREFIX配置:普通Linux系统全局安装用/usr,Jetson Nano建议用~/.local避免权限问题
  • 安装完成后不要在gst-python源码目录下运行Python脚本

重新安装的标准流程:

git clone https://github.com/GStreamer/gst-python.git
cd gst-python

# 获取系统GStreamer版本并切换对应分支
GSTREAMER_VERSION=$(gst-launch-1.0 --version | grep version | tr -s ' ' '\n' | tail -1)
git checkout $GSTREAMER_VERSION

# 配置Python相关路径
PYTHON=/usr/bin/python3
LIBPYTHON=$($PYTHON -c 'from distutils import sysconfig;print(sysconfig.get_config_var("LDLIBRARY"))')
LIBPYTHONPATH=$(dirname $(ldconfig -p | grep -w $LIBPYTHON | head -1 | tr ' ' '\n' | grep /))
# Jetson Nano用PREFIX=~/.local,普通系统用/usr
PREFIX=~/.local

# 编译安装
./autogen.sh --disable-gtk-doc --noconfigure
./configure --with-libpython-dir=$LIBPYTHONPATH --prefix $PREFIX
make
make install

3. 验证安装正确性

退出gst-python目录后,运行以下命令验证:

python3 -c "import gi; gi.require_version('Gst', '1.0'); from gi.repository import Gst; Gst.init(None); print(Gst.version())"

若输出GStreamer的版本号,说明安装成功。

关键注意事项
  • 禁止在gst-python源码目录下运行依赖gi的Python代码,否则会优先加载源码内不完整的gi模块
  • 确保系统已安装PyGObject(python3-gi包),这是gi.require_version方法的来源,gst-python是基于它的扩展模块

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 12:15:32