GitLab CI中无法安装使用Python模块Gst(依赖PyGObject)求助
GitLab CI里Python项目跑Gst(依赖PyGObject)的解决办法
问题出在哪?
PyGObject只是GObject的Python绑定工具,Gst(GStreamer)的实际功能靠系统级的库文件支撑。你本地Ubuntu22能跑是因为系统自带了这些底层依赖,但CI环境的镜像默认没有,光装PyGObject肯定找不到Gst命名空间。
搞定步骤(用Ubuntu 22.04镜像最稳)
1. 选对基础镜像
别用纯Python镜像,直接用ubuntu:22.04——和你本地环境一致,兼容性拉满,还能直接用apt装系统依赖。
2. 先装系统依赖,再装Python包
把下面的配置丢进你的.gitlab-ci.yml里:
stages: - test run_gst_script: image: ubuntu:22.04 before_script: # 更新源+装系统级依赖 - apt-get update -y - apt-get install -y python3 python3-pip python3-gi gstreamer1.0-plugins-base gstreamer1.0-plugins-good gir1.2-gstreamer-1.0 gir1.2-gst-plugins-base-1.0 # 先验证GStreamer是否正常 - gst-inspect-1.0 --version script: # 装项目其他Python依赖 - pip3 install -r requirements.txt # 跑你的脚本 - python3 your_gst_script.py
为啥要装这些包?
python3-gi:Ubuntu官方预装的PyGObject,比pip装的更适配系统,不会有版本冲突gstreamer1.0-plugins-base/good:GStreamer的核心插件和常用功能插件gir1.2-gstreamer-1.0:GObject的 introspection 文件,这是PyGObject能识别Gst命名空间的关键
要是非得用纯Python镜像?
以python:3.10-slim为例,得手动补全系统依赖:
before_script: - apt-get update -y - apt-get install -y libgirepository1.0-dev gcc libcairo2-dev pkg-config python3-dev gir1.2-gstreamer-1.0 gstreamer1.0-plugins-base - pip install pycairo PyGObject
额外提醒
- 确保CI里用的Python版本和系统依赖版本匹配,别乱跨版本
- 跑脚本前先用
gst-inspect-1.0验证GStreamer是否正常,能省很多排查时间
内容的提问来源于stack exchange,提问作者yPhil
相关产品推荐
相关产品推荐

