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

如何基于指定版本GLib 2.76.6编译安装PyGObject?

PyGObject编译后导入gi出现循环导入错误的解决方案

问题背景

我在Python项目中需要使用GLib 2.76.6版本,但当前PyGObject版本为2.71.3,于是手动从源码编译构建了适配GLib 2.76.6的PyGObject,安装后执行import gi时触发如下错误:

Python 3.10.12 (main, Jun 11 2023, 05:26:28) [GCC 11.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import gi
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/opt/nvidia/deepstream/deepstream-6.4/pygobject-3.44.2/gi/__init__.py", line 40, in <module>
    from . import _gi
ImportError: cannot import name '_gi' from partially initialized module 'gi' (most likely due to a circular import)

解决方法

  • 调整Python路径优先级
    系统默认的PyGObject可能会覆盖你编译的版本。先执行以下命令查看Python的路径顺序:

    python -c "import sys; print('\n'.join(sys.path))"
    

    如果系统自带的PyGObject路径排在/opt/nvidia/deepstream/deepstream-6.4/pygobject-3.44.2前面,设置环境变量让Python优先加载编译后的目录:

    export PYTHONPATH=/opt/nvidia/deepstream/deepstream-6.4/pygobject-3.44.2:$PYTHONPATH
    

    之后再尝试导入gi。

  • 验证编译产物完整性
    检查/opt/nvidia/deepstream/deepstream-6.4/pygobject-3.44.2/gi目录下是否存在_gi.so(Linux平台的动态链接库文件)。如果没有,说明编译过程出错,重新执行编译步骤:

    1. 清理编译残留:make clean
    2. 重新配置,明确指定GLib的安装路径:
      ./configure --prefix=/opt/nvidia/deepstream/deepstream-6.4/pygobject-3.44.2 --with-glib=/path/to/glib-2.76.6
      
      注意把/path/to/glib-2.76.6替换成你实际的GLib安装目录。
    3. 编译并安装:make && make install
  • 确认版本兼容性
    检查PyGObject 3.44.2是否支持Python 3.10.12。如果版本不兼容,切换到官方标注支持的Python版本后重新编译。

  • 排查本地文件冲突
    确保当前工作目录或项目目录下没有名为gi.py的文件,否则Python会优先加载这个本地文件,导致模块导入异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 04:31:02