如何让Telegram Bot发送SVG图片?pyvips库加载失败求助
pyvips导入失败:libgobject库加载错误的解决办法
问题背景
我正在开发一款Telegram机器人,用来从phys-ege.sdamgia.ru网站发送习题图片。需要把网站的SVG格式习题转换成PNG或JPEG,但导入pyvips库时触发了以下错误:
Traceback (most recent call last): File "D:/Питончик/hbntdfg.py", line 1, in <module> import pyvips File "C:\Users\denve\AppData\Local\Programs\Python\Python311\Lib\site-packages\pyvips\__init__.py", line 70, in <module> gobject_lib = ffi.dlopen(_gobject_libname) File "C:\Users\denve\AppData\Local\Programs\Python\Python311\Lib\site-packages\cffi\api.py", line 150, in dlopen lib, function_cache = _make_ffi_library(self, name, flags) File "C:\Users\denve\AppData\Local\Programs\Python\Python311\Lib\site-packages\cffi\api.py", line 832, in _make_ffi_library backendlib = _load_backend_lib(backend, libname, flags) File "C:\Users\denve\AppData\Local\Programs\Python\Python311\Lib\site-packages\cffi\api.py", line 828, in _load_backend_lib return backend.load_library(path, flags) OSError: cannot load library 'C:\Program Files (x86)\GTK2-Runtime\bin\libgobject-2.0-0.dll': error 0xc1
解决步骤
1. 更换GTK运行时版本
错误根源是GTK2运行时和Python 3.11不兼容。卸载当前的GTK2 Runtime,安装对应系统架构的GTK3稳定版,安装完成后重启Python环境再测试。
2. 手动配置库路径
如果安装GTK3后仍报错,在导入pyvips前手动把GTK的bin目录加入系统PATH:
import os # 替换为你的GTK3实际安装路径 os.environ['PATH'] = r'C:\Program Files\GTK3-Runtime\bin;' + os.environ['PATH'] import pyvips
3. 用conda安装pyvips
conda会自动处理所有依赖,避免库版本不匹配问题:
conda install -c conda-forge pyvips
如果用pip,安装带完整依赖的版本:
pip install pyvips[all]
4. 换用其他SVG转PNG库
如果pyvips的依赖问题搞不定,试试更简单的替代方案:
- cairosvg(纯Python,无需额外依赖):
import cairosvg # 直接从URL转存为PNG cairosvg.svg2png(url='https://phys-ege.sdamgia.ru/xxx.svg', write_to='exercise.png') - svglib + Pillow:
from svglib.svglib import svg2rlg from reportlab.graphics import renderPM # 读取SVG文件并转换 drawing = svg2rlg('exercise.svg') renderPM.drawToFile(drawing, 'exercise.png', fmt='PNG')
内容的提问来源于stack exchange,提问作者denverskill
相关产品推荐
相关产品推荐

