Ech*_*Foe 14 python windows django weasyprint lib
我按照安装 weasyprint (Django 项目)的说明安装了包weasyprint。\n我的系统:win 10。我已经安装了gtk3,它存在于我的PATH中\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\nRun Code Online (Sandbox Code Playgroud)\n\n\nOSError:无法加载库“gobject-2.0”:错误0x7e。此外,ctypes.util.find_library() 无法找到名为“gobject-2.0”的库
\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()。
对于 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
我绝望了,决定安装 gtk2 库C:\Program Files (x86)\GTK2\lib\并指定 PATH 列表中的第一个。它有效......但我的操作系统 - win 10 x64。我不知道为什么 GTK3 库拒绝工作。
| 归档时间: |
|
| 查看次数: |
48621 次 |
| 最近记录: |