Ошибка OSE: dlopen () не удалось загрузить библиотеку: cairo / cairo-2 / cairo-gobject-2 - PullRequest
0 голосов
/ 11 декабря 2018

мой взгляд

@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 голосов
/ 06 марта 2019

Убедитесь, что библиотеки разработки Cygwin для pixman (libpixman1-devel), png, pango и poppler (создание PDF) установлены.Для этого запустите программу установки Cygwin, найдите pixman, poppler и libpng и установите библиотеки devel .

Я заметил, что когда устанавливал библиотеки разработки для Pango,он установил специальные "GTK" версии Каира и других отделов.

После того, как я установил эти библиотеки Cygwin, все заработало и вышеприведенное сообщение об ошибке ушло (я также скомпилировал и установил Pixman из исходного кода, который может быть или не быть частью исправления).

...