OSError:dlopen()无法加载库:cairo / cairo-2 / cairo-gobject-2

时间:2018-12-11 15:51:43

标签: python django django-rest-framework weasyprint

我的观点

@api_view(['GET'])
    @renderer_classes((JSONRenderer,TemplateHTMLRenderer,BrowsableAPIRenderer))
    def admin_order_pdf(request, order_id):
    # def admin_order_pdf(request, order_id):
        order = get_object_or_404(Direct, id=order_id)
        price=order.price
        discount=order.discount
        total=price-discount
        html = render_to_string('bill/bill.html',
        {'order': order,'total':total})
        response = HttpResponse(content_type='application/pdf')
        response['Content-Disposition'] = 'filename=\
        "order_{}.pdf"'.format(order.id)
        weasyprint.HTML(string=html).write_pdf(response,
        stylesheets=[weasyprint.CSS(
        settings.STATIC_ROOT + 'css/pdf.css')])
        return response

,当我尝试运行服务器或尝试运行weasyprint代码时 我因错误而被解雇

  raise OSError("dlopen() failed to load a library: %s" % ' / '.join(names))

OSError: dlopen() failed to load a library: cairo / cairo-2 / cairo-gobject-2

我也更新了我的环境变量

C:\Program Files\GTK3-Runtime Win64\bin

到这个位置

1 个答案:

答案 0 :(得分:0)

确保已安装用于pixman(libpixman1-devel),png,pango和poppler(PDF生成)的Cygwin开发库。为此,请运行Cygwin安装程序,并查找pixman,poppler和libpng,然后安装 devel 库。

在安装Pango的开发库时,我发现它安装了开罗和其他部门的特殊“ GTK”版本。

一旦我安装了这些Cygwin库,一切都会起作用,并且上面的错误消息消失了(我也从源代码编译并安装了Pixman,这可能是也可能不是修复程序的一部分)。