OSError:无法加载库“gobject-2.0”:错误0x7e

Ech*_*Foe 14 python windows django weasyprint lib

我按照安装 weasyprint (Django 项目)的说明安装了包weasyprint。\n我的系统:win 10。我已经安装了gtk3,它存在于我的PATH中\n付费GTK3

\n
import weasyprint\n...\n@staff_member_required\ndef order_admin_pdf(request, order_id):\n    # \xd0\x9f\xd0\xbe\xd0\xbb\xd1\x83\xd1\x87\xd0\xb0\xd0\xb5\xd0\xbc \xd0\xb7\xd0\xb0\xd0\xba\xd0\xb0\xd0\xb7 \xd0\xbf\xd0\xbe ID:\n    order = get_object_or_404(Order, id=order_id)\n    # \xd0\x9f\xd0\xb5\xd1\x80\xd0\xb5\xd0\xb4\xd0\xb0\xd0\xb5\xd0\xbc \xd0\xbe\xd0\xb1\xd1\x8a\xd0\xb5\xd0\xba\xd1\x82 \xd0\xb2 \xd1\x84\xd1\x83\xd0\xbd\xd0\xba\xd1\x86\xd0\xb8\xd1\x8e render_to \xd1\x87\xd0\xb5\xd1\x80\xd0\xb5\xd0\xb7 \xd0\xb3\xd0\xb5\xd0\xbd\xd0\xb5\xd1\x80\xd0\xb0\xd1\x86\xd0\xb8\xd1\x8e \xd1\x88\xd0\xb0\xd0\xb1\xd0\xbb\xd0\xbe\xd0\xbd\xd0\xb0 pdf.html HTML \xd0\xb2 \xd0\xb2\xd0\xb8\xd0\xb4\xd0\xb5 \xd1\x81\xd1\x82\xd1\x80\xd0\xbe\xd0\xba\xd0\xb8:\n    html = render_to_string(\'shop/orders/order_admin_pdf.html\',\n                            {\'order\': order})\n    # \xd0\xa1\xd0\xbe\xd0\xb7\xd0\xb4\xd0\xb0\xd0\xb5\xd0\xbc \xd0\xbe\xd0\xb1\xd1\x8a\xd0\xb5\xd0\xba\xd1\x82 \xd0\xbe\xd0\xb2\xd1\x82\xd0\xb5\xd1\x82\xd0\xb0 \xd1\x81 \xd1\x82\xd0\xb8\xd0\xbf\xd0\xbe\xd0\xbc \xd1\x81\xd0\xbe\xd0\xb4\xd0\xb5\xd1\x80\xd0\xb6\xd0\xb8\xd0\xbc\xd0\xbe\xd0\xb3\xd0\xbe application/pdf \xd0\xb8 \xd0\xb7\xd0\xb0\xd0\xb3\xd0\xbe\xd0\xbb\xd0\xbe\xd0\xb2\xd0\xba\xd0\xbe\xd0\xbc Content-Disposition:\n    response = HttpResponse(content_type=\'application/pdf\')\n    response[\'Content-Disposition\'] = \'filename=order_{}.pdf"\'.format(order.id)\n    # \xd0\x92\xd1\x8b\xd0\xb7\xd0\xbe\xd0\xb2 \xd0\xbc\xd0\xb5\xd1\x82\xd0\xbe\xd0\xb4\xd0\xb0 weasyprint \xd0\xb4\xd0\xbb\xd1\x8f \xd0\xbf\xd0\xbe\xd0\xbb\xd1\x83\xd1\x87\xd0\xb5\xd0\xbd\xd0\xb8\xd1\x8f PDF \xd0\xb4\xd0\xbe\xd0\xba\xd1\x83\xd0\xbc\xd0\xb5\xd0\xbd\xd1\x82\xd0\xb0:\n    weasyprint.HTML(string=html).write_pdf(response,\n                                           stylesheets=[weasyprint.CSS(\n                                               settings.STATIC_ROOT + \'css/pdf.css\')])\n    return response\n
Run Code Online (Sandbox Code Playgroud)\n
\n

OSError:无法加载库“gobject-2.0”:错误0x7e。此外,ctypes.util.find_library() 无法找到名为“gobject-2.0”的库

\n
\n

Mar*_*tin 11

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

如果您遵循官方文档中的安装指南,则以下示例有效。

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')
Run Code Online (Sandbox Code Playgroud)

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


Ale*_*eem 7

对于 MacOS 这很有帮助。基本上你必须创建几个链接。

sudo ln -s /opt/homebrew/opt/glib/lib/libgobject-2.0.0.dylib /usr/local/lib/gobject-2.0
sudo ln -s /opt/homebrew/opt/pango/lib/libpango-1.0 .dylib /usr/local/lib/pango-1.0
sudo ln -s /opt/homebrew/opt/harfbuzz/lib/libharfbuzz.dylib /usr/local/lib/harfbuzz
sudo ln -s /opt/homebrew/opt/fontconfig /lib/libfontconfig.1.dylib /usr/local/lib/fontconfig-1
sudo ln -s /opt/homebrew/opt/pango/lib/libpangoft2-1.0.dylib /usr/local/lib/pangoft2-1.0

https://github.com/Kozea/WeasyPrint/issues/1556#issuecomment-1097977671


Ech*_*Foe 5

我绝望了,决定安装 gtk2 库C:\Program Files (x86)\GTK2\lib\并指定 PATH 列表中的第一个。它有效......但我的操作系统 - win 10 x64。我不知道为什么 GTK3 库拒绝工作。