Weasyprint get undefined property at invoking write_pdf: "AttributeError: 'PosixPath' object has no attribute 'read_text'"
Asked Answered
F

2

8

I'm running weasyprint project on ubuntu 18.04 and I try to create a a pdf.

The problem started when I try to set a footer image. I'm running on python 3.6.7

This is my code invoking weasyprint:

import sys
import os
from weasyprint import HTML, CSS

htmlFile = sys.argv[1]
pdfFile = sys.argv[2]

html = HTML(filename=htmlFile)

css = CSS(string='@page { @bottom-center { width: 125%; margin-top: 10px; content: " "; background-image: url(file://' + os.getcwd() + '/pdf/footer.png); background-repeat: no-repeat; background-position: right;  background-size: 100%; } }')

html.write_pdf(pdfFile, stylesheets=[css])

But then I got following error:

Error: Command failed: python3 /node_modules/my-project/python/run.py /node_modules/my-project/pdf/catalog_01e299a3-1fca-482b-a512-e1bea832559f.html /node_modules/my-project/pdf/catalog_01e299a3-1fca-482b-a512-e1bea832559f.pdf
Traceback (most recent call last):
File "/node_modules/my-project/python/run.py", line 3, in <module>
    from weasyprint import HTML, CSS
File "/node_modules/my-project/python/weasyprint/__init__.py", line 394, in <module>
    from .css import preprocess_stylesheet  # noqa
File "/node_modules/my-project/python/weasyprint/css/__init__.py", line 25, in <module>
    from . import computed_values
File "/node_modules/my-project/python/weasyprint/css/computed_values.py", line 17, in <module>
    from .. import text
File "/node_modules/my-project/python/weasyprint/text.py", line 14, in <module>
    import cairocffi as cairo
File "/node_modules/my-project/python/cairocffi/__init__.py", line 19, in <module>
    VERSION = __version__ = (Path(__file__).parent / 'VERSION').read_text().strip()
AttributeError: 'PosixPath' object has no attribute 'read_text'
Fingernail answered 19/2, 2019 at 9:48 Comment(0)
F
11

I solve the problem after some help here: https://github.com/Kozea/WeasyPrint/issues/807

The problem resume below:

In my pyhton project I got a requiriments.txt and I put pathlib as requirement. Somehow this pathlib overrides the current lib installed althogether python 3.5 or higher. When I remove this dependencie the problem is solved.

Fingernail answered 19/2, 2019 at 20:2 Comment(0)
I
-3

I had this same error while trying to install a package through pip install, but I did need pathlib in my project, so I couldn't simply remove the dependency.

I found the solution here

Basically, you have to run pip3 instead of pip

International answered 17/11, 2021 at 20:1 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.