OSError: cannot load library 'gobject-2.0': error 0x7e

OSError: cannot load library 'gobject-2.0': error 0x7e

我根据说明 Installing weasyprint 安装了软件包 weasyprint(Django 项目)。 我的系统:win 10。我已经安装了 gtk3 并且它出现在我的 PATH

import weasyprint
...
@staff_member_required
def order_admin_pdf(request, order_id):
    # Получаем заказ по ID:
    order = get_object_or_404(Order, id=order_id)
    # Передаем объект в функцию render_to через генерацию шаблона pdf.html HTML в виде строки:
    html = render_to_string('shop/orders/order_admin_pdf.html',
                            {'order': order})
    # Создаем объект овтета с типом содержимого application/pdf и заголовком Content-Disposition:
    response = HttpResponse(content_type='application/pdf')
    response['Content-Disposition'] = 'filename=order_{}.pdf"'.format(order.id)
    # Вызов метода weasyprint для получения PDF документа:
    weasyprint.HTML(string=html).write_pdf(response,
                                           stylesheets=[weasyprint.CSS(
                                               settings.STATIC_ROOT + 'css/pdf.css')])
    return response

OSError: cannot load library 'gobject-2.0': error 0x7e. Additionally, ctypes.util.find_library() did not manage to locate a library called 'gobject-2.0'

我绝望了,决定安装库 gtk2 C:\Program Files (x86)\GTK2\lib\ 并在 PATH 列表中指定第一个。它起作用了……但是我的 OS - 赢得 10 x64。为什么库 GTK3 拒绝工作,我不知道。

Python 3.8 开始,扩展模块的 DLL 依赖项和在 Windows 上加载 ctypes 的 DLL 现在可以更安全地解析。仅搜索系统路径、包含 DLL 或 PYD 文件的目录以及添加了 add_dll_directory() 的目录以查找加载时依赖项。 具体来说,不再使用PATH和当前工作目录,对它们的修改将不再对正常的DLL解析产生任何影响。

如果您按照 official documentation 中的安装指南进行操作,则以下示例有效。

import os

os.add_dll_directory(r"C:\Program Files\GTK3-Runtime Win64\bin")

from weasyprint import HTML

HTML('https://weasyprint.org/').write_pdf('weasyprint-website.pdf')

本质上你需要在与 WeasyPrint 交互之前调用 add_dll_directory()