python-pdfkit icon indicating copy to clipboard operation
python-pdfkit copied to clipboard

Hidden dependency on which program

Open Zaczero opened this issue 1 year ago • 3 comments

There seems to be a hidden dependency on the which program.

https://github.com/JazzCore/python-pdfkit/blob/fb86d338a3706e6e0ede09170b9fa58fb740ec1e/pdfkit/configuration.py#L29

The way the binary gets discovered is unnecessarily complicated. Instead of starting an external binary (a whole new process), I recommend that the script simply checks the $PATH env variable. The syntax for it is very simple.

Sample solution:

    for directory in os.environ.get('PATH', '').split(os.pathsep):
        potential_path = os.path.join(directory, 'wkhtmltopdf')  # perhaps .exe on windows?
        if os.path.isfile(potential_path) and os.access(potential_path, os.X_OK):
            return potential_path

Zaczero avatar Feb 22 '24 12:02 Zaczero

It is even easier with recent Python versions by relying on the stdlib shutil.which.

stefan6419846 avatar Mar 25 '24 19:03 stefan6419846

Is that the same as ?

`root@ubuntu-s-2vcpu-4gb-amd-sfo3-01:~# which which

/usr/bin/which`

I always laugh when I do that because it reminds me of the Wizard of Oz.

"Wicked Witch of the East - Wikipedia

The Wicked Witch of the East The Wicked Witch of the East was featured in the film The Wizard of Oz (1939), in which she is the sister of the Wicked Witch of the West. As in the book, she is killed when Dorothy's house falls on her."

sscotti avatar Mar 26 '24 05:03 sscotti

It should be mostly identical to the known which tool, but implemented in pure Python: https://github.com/python/cpython/blob/1c72265a31eaf8724a5dd16391b951366460b64e/Lib/shutil.py#L1525-L1605

stefan6419846 avatar Mar 26 '24 05:03 stefan6419846