Failed to load a library: cairo

Jack022 picture Jack022 · Jun 21, 2019 · Viewed 11.2k times · Source

I keep getting this error when trying to run the following command:

python -m weasyprint http://weasyprint.org weasyprint.pdf

The error:

  raise OSError("dlopen() failed to load a library: %s" % ' / '.join(names))
OSError: dlopen() failed to load a library: cairo / cairo-2 / cairo-gobject-2 / cairo.so.2

I installed Weasyprint using pip install weasyprint. To install cairo i used this doc: https://weasyprint.readthedocs.io/en/latest/install.html

But, at the end of the guide, when i try to run WHERE libcairo-2.dll i get a not found error.

I have been following the guide step by step but it's not working and i keep getting the same error, i searched for various solutions but none of them fixes the issue. Any advice? Thanks in advance

Answer

Jadon Manilall picture Jadon Manilall · Aug 21, 2019

You need to also install the GTK+ libraries (not just weasyprint), in order for weasyprint to render the final PDF.

You can find the installation instructions for your OS documented on weasyprint's website.

Dear Windows user, please follow these steps carefully.

Really carefully. Don’t cheat.

Besides a proper Python installation and a few Python packages, WeasyPrint needs the Pango, cairo and GDK-PixBuf libraries. They are required for the graphical stuff: Text and image rendering. These libraries aren’t Python packages. They are part of GTK+ (formerly known as GIMP Toolkit), and must be installed separately.

If you're running a 64bit version of windows you can grab the GTK installers from here. Once you have that installed... Then running

python -m weasyprint http://weasyprint.org weasyprint.pdf

Should work as expected.