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

后端 未结 6 1078
走了就别回头了
走了就别回头了 2020-12-18 18:43

This is my view:

from django.conf import settings
from django.http import HttpResponse
from django.template.loader import render_to_string
import weasyprint
         


        
相关标签:
6条回答
  • 2020-12-18 18:59
    sudo apt-get install build-essential python3-dev python3-pip python3-setuptools python3-wheel python3-cffi libcairo2 libpango-1.0-0 libpangocairo-1.0-0 libgdk-pixbuf2.0-0 libffi-dev shared-mime-info
    

    http://weasyprint.readthedocs.io/en/latest/install.html#linux

    0 讨论(0)
  • 2020-12-18 19:08

    This was solved for me by installing the following dependencies on Ubuntu:

     sudo apt-get install libpango1.0-0
     sudo apt-get install libcairo2
     sudo apt-get install libpq-dev
    

    Check out the dependencies at the link:

    http://weasyprint.readthedocs.io/en/latest/install.html

    0 讨论(0)
  • 2020-12-18 19:08

    I also had the same issue on a fresh installation of weasyprint on OSX EL CAPITAN. This is how I solved it.

    Firstly, cairo was not found by when installed via pip, so I tried installing it via homebrew using the following command

    brew install cairo pango gdk-pixbuf libxml2 libxslt libffi
    

    Once this is done, I tried to find out the path of cairo installation. For my case, the location was /usr/local/homebrew/Cellar/cairo/1.14.6_1/lib/ I just exported this to my DYLD library path

    export DYLD_LIBRARY_PATH=/usr/local/homebrew/Cellar/cairo/1.14.6_1/lib/
    

    Then I uninstalled and installed weasyprint again

    pip uninstall weasyprint
    pip install weasyprint
    

    Post that, I tried to run weasyprint, but got a new error

    Traceback (most recent call last):
    File "/Users/anurag/VirtualEnvs/test/bin/weasyprint", line 11, in <module>
     load_entry_point('WeasyPrint==0.31', 'console_scripts', 'weasyprint')()
    File "/Users/anurag/VirtualEnvs/test/lib/python2.7/site-packages/pkg_resources/__init__.py", line 565, in load_entry_point
     return get_distribution(dist).load_entry_point(group, name)
    File "/Users/anurag/VirtualEnvs/test/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2598, in load_entry_point
     return ep.load()
    File "/Users/anurag/VirtualEnvs/test/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2258, in load
     return self.resolve()
    File "/Users/anurag/VirtualEnvs/test/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2264, in resolve
     module = __import__(self.module_name, fromlist=['__name__'], level=0)
    File "/Users/anurag/VirtualEnvs/test/lib/python2.7/site-packages/weasyprint/__init__.py", line 338, in <module>
     from .css import PARSER, preprocess_stylesheet  # noqa
    File "/Users/anurag/VirtualEnvs/test/lib/python2.7/site-packages/weasyprint/css/__init__.py", line 30, in <module>
     from . import computed_values
    File "/Users/anurag/VirtualEnvs/test/lib/python2.7/site-packages/weasyprint/css/computed_values.py", line 18, in <module>
     from .. import text
    File "/Users/anurag/VirtualEnvs/test/lib/python2.7/site-packages/weasyprint/text.py", line 216, in <module>
     'libgobject-2.0.dylib')
    File "/Users/anurag/VirtualEnvs/test/lib/python2.7/site-packages/weasyprint/text.py", line 212, in dlopen
     return ffi.dlopen(names[0])  # pragma: no cover
    File "/Users/anurag/VirtualEnvs/test/lib/python2.7/site-packages/cffi/api.py", line 139, in dlopen
     lib, function_cache = _make_ffi_library(self, name, flags)
    File "/Users/anurag/VirtualEnvs/test/lib/python2.7/site-packages/cffi/api.py", line 770, in _make_ffi_library
     backendlib = _load_backend_lib(backend, libname, flags)
    File "/Users/anurag/VirtualEnvs/test/lib/python2.7/site-packages/cffi/api.py", line 759, in _load_backend_lib
     return backend.load_library(name, flags)
    OSError: cannot load library gobject-2.0: dlopen(gobject-2.0, 2): image not found
    

    I tried to find out the location of object library. Found it in /opt/local/lib and set the fallback library path

    export DYLD_FALLBACK_LIBRARY_PATH=/opt/local/lib
    

    After that, I tried running weasyprint again, and it worked

    (test)anurag-mac:~ anurag$ weasyprint --version
    WeasyPrint version 0.31
    

    I hope someone else also finds it useful.

    UPDATE-1

    Although the above method worked, MySQL python started giving errors because of this and culprit was defining a fallback library path. So I removed this line

    export DYLD_FALLBACK_LIBRARY_PATH=/opt/local/lib
    

    which gave me the gobject error again, then I tried finding the location of its installation and appended to the DYLD_LIBRARY_PATH

    export DYLD_LIBRARY_PATH=/usr/local/homebrew/Cellar/cairo/1.14.6_1/lib/:/usr/local/homebrew/Cellar/glib/2.48.2/lib/
    

    After doing that, I got a similar error for pango. After correcting all the errors, this is the final library path which worked

    export DYLD_LIBRARY_PATH=/usr/local/homebrew/Cellar/cairo/1.14.6_1/lib/:/usr/local/homebrew/Cellar/glib/2.48.2/lib/:/usr/local/homebrew/Cellar/pango/1.40.3/lib/
    
    0 讨论(0)
  • 2020-12-18 19:15

    I solve this problem by following this link: https://github.com/Kozea/WeasyPrint/issues/79

    0 讨论(0)
  • 2020-12-18 19:23

    I had the same error with boxes.py on macOS Mojave. My solution was to install cairocffi with pip3 and cairo with brew. The two commands fail on their own, but together they work for boxes.py:

    pip3 install cairocffi
    brew install cairo
    
    0 讨论(0)
  • 2020-12-18 19:24

    If you are getting this error when using weasyprint, then you may have forgotten to install Pango, GdkPixbuf, and cairo dependencies of weasyprint which cannot be installed using pip/pip3

    For Debain/Ubuntu

    sudo apt-get install build-essential python3-dev python3-pip python3-setuptools python3-wheel python3-cffi libcairo2 libpango-1.0-0 libpangocairo-1.0-0 libgdk-pixbuf2.0-0 libffi-dev shared-mime-info
    

    For other platforms refer the below link

    https://weasyprint.readthedocs.io/en/latest/install.html

    0 讨论(0)
提交回复
热议问题