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
相关产品推荐
相关产品推荐

