Open kleisauke opened 1 week ago
Nice!
Yes, maybe a separate repo is better.
... here are some testing notes:
$ pkg-config --exists --print-errors vips
Package vips was not found in the pkg-config search path.
Perhaps you should add the directory containing `vips.pc'
to the PKG_CONFIG_PATH environment variable
Package 'vips', required by 'virtual:world', not found
$ pip3 install pyvips
$ python -c "import pyvips; print(pyvips.API_mode)"
ModuleNotFoundError: No module named '_libvips'
During handling of the above exception, another exception occurred:
[...]
OSError: cannot load library 'libvips.so.42': libvips.so.42: cannot open shared object file: No such file or directory.
[...]
$ pip3 install pyvips-binary
$ python -c "import pyvips; print(pyvips.API_mode)"
True
$ python -c "import pyvips; pyvips.Image.black(1024, 1024).write_to_file('x.jpg')"
$ file x.jpg
x.jpg: JPEG image data, Exif standard: [TIFF image data, little-endian, direntries=6, orientation=upper-left, xresolution=86, yresolution=94, resolutionunit=2], baseline, precision 8, 1024x1024, components 1
Ah fantastic! That's so cool. I'll test here as well.
Shall we put you on the authors
list as well? What email addr would you prefer?
Is is possible to invert the sense of this option? I'm sure most people should use the netvips binaries rather than the system ones.
So pip install pyvips
has the pyvips-binary
dependency, and pip install pyvips[system]
(something like that?) will use the system libvips.
Shall we put you on the
authors
list as well? What email addr would you prefer?
Feel free to add me to the authors list! I usually use the same email address that's on my GitHub profile. https://github.com/kleisauke/pyvips-binary/blob/deaf1bf1c360e400f8b7b7869d05c4e695c2b4e5/pyproject.toml#L17
Is is possible to invert the sense of this option? I'm sure most people should use the netvips binaries rather than the system ones.
I had the same thought, but it doesn't seem to be possible at the moment. This future possible enhancement is discussed in detail here: https://discuss.python.org/t/4898.
Maybe we could just make another pyvips package (pyvips-system
?) without a dependency on pyvips-binary
?
That approach might work, but I'm uncertain if it's the best option for users who prefer relying on system binaries.
For example, Zulip tends to favor using libvips from the package manager (see e.g. commit https://github.com/zulip/zulip/commit/e8f7e281a7d389297783a2185fd0ff09ea4493f5). Additionally, pyvips is commonly used by users who process whole-slide images, something that the pyvips-binary
dependency doesn't support (since it uses the -web
variant).
The pyvips-binary
package also lacks pre-built wheels for less common architectures (such as linux-riscv64
, linux-ppc64le
, win32-arm64
, etc.) and only supports CPython.
Perhaps we should consider catching the OSError
mentioned above and re-throwing it with a message suggesting that the optional [binary]
package might need to be installed? sharp handles this elegantly, see for example:
Allowing users to install pyvips with binary packages via:
See: https://pypi.org/project/pyvips-binary/.
Marked as draft due to this notes:
Perhaps this should be in a separate repository?Done: https://github.com/kleisauke/pyvips-binary-static-ffi
variant. The plan is to distribute the-static
variant when libvips 8.16 is released. https://github.com/libvips/pyvips/blob/ea769b2dab386a959a4e3cb62fc00b81f3051fc5/pyvips-binary/scripts/cibw_before_build.sh#L14-L16 (this will also require a major bump in NetVips, see e.g. commit https://github.com/kleisauke/net-vips/commit/8856756d39c1d0f88a903bce20374d89bc6573e3)