You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
10.0.0 refused to build on Windows with 32-bit Python #7251
hello the pillow lib refused to install on windows python 3.11 x32
here is the error
File "<string>", line 1005, in <module>
RequiredDependencyException:
The headers or library files could not be found for zlib,
a required dependency when compiling Pillow from source.
Please see the install instructions at:
https://pillow.readthedocs.io/en/latest/installation.html
[end of output]
note: This error originates from a subprocess, and is likely not a problem with pip.
ERROR: Failed building wheel for pillow
Failed to build pillow
ERROR: Could not build wheels for pillow, which is required to install pyproject.toml-based projects
I suggest we drop all the 32-bit wheels... If there's a lot of demand or very good reason, we can always add something back (e.g. 3.8 on Windows has a slightly larger percentage).
The problem is that when installing pillow, newer version (10.x) with tar.gz is preferred over the older wheel.
And newer version can't be built on 32 bits, so several people could be affected by this.
Thank you, @radarhere , but that might be not scalable. The pillow package is rarely used directly, it is rather an indirect dependency. Other packages can be involved, for which tar.gz would be needed.
Just trying to chime in, providing arguments to consider providing wheels or not announcing 32 bit support in first place.
providing arguments to consider providing wheels or not announcing 32 bit support in first place
I don't understand the meaning of 'not announcing 32 bit support in first place'. Perhaps these words aren't quite correct, because this was announced.
If you just want to say that you're a 32-bit user, and wheels make your life easier, mission accomplished - I don't think we're trying to tell you that dropping 32-bit wheels has zero effect. If a flood of other people also chime in and say that they want 32-bit wheels, then those voices and your voice will make us reconsider this.
Potentially conflicting with any other package requiring source, not binary
In your example, you mention matplotlib. I realise you might say that was just an example, but matplotlib has actually also decided to drop 32-bit wheels moving forward.
providing arguments to consider providing wheels or not announcing 32 bit support in first place
I don't understand the meaning of 'not announcing 32 bit support in first place'. Perhaps these words aren't quite correct, because this was announced.
I'm sorry for selecting potentially not the best words.
You're right, the change was announced.
I was thinking from a technical perspective - the package somehow indicating in its data that it's not supporting 32 bits (in its metadata).
That way it wouldn't be picked up by pip in first place.
And users wanting to rebuild 32-bit version would potentially have an additional step to do it.
I'm not sure if and how it's doable, so probably stop at this point.
Provided my comments so far, because we've been affected by this change, and while I think I support it, I hope that the flow can be improved.
somehow indicating in its data that it's not supporting 32 bits (in its metadata).
It’s not the case. Wheels are not provided, which doesn’t mean that you can’t install it at all.
There are could be a dozen of reasons why provided wheels does not suits you. It’s more correct to say that there is always only tiny intersection of factors (OS vendor, OS version, core libraries, platform, bitness) when you can find wheels. And of course Pillow provides a list of this intersections: it's a list of the wheels itself.
changed the title [-]10.0.0 refused to build on windows with python 3.11 32 bit[/-][+]10.0.0 refused to build on Windows with 32-bit Python[/+]on Jul 6, 2023
@radarhere: Pillow is a requirement of the Pywikibot framework and we are running 32/64-bit tests on Appveyor. But CI tests are only one side. What is the solution for bot owners having Python 3.8+ on 32-bit? We could require Pillow < 10.0.0 for a while but this cannot be the way to go.
Do you mean that it is not just a matter of you installing Pillow, but also your users? They too could install Pillow from source. It would be the hope that because 32-bit use is fading, that this only affects a small portion of users. If you find a large number of users struggling with this, you can ask your users to come here and encourage us to restore 32-bit wheels.
I suggest we drop all the 32-bit wheels... If there's a lot of demand or very good reason, we can always add something back (e.g. 3.8 on Windows has a slightly larger percentage).
Using https://github.com/ofek/pypinfo to get downloads numbers for Pywikibot from PyPI over the last week, I only see a single download for 32-bit (armv7l, 0.06%), the other 1,732 are 64-bit (99.94%):
For a summary of that other issue, the user suggests that setuptools allow packages to require 32-bit support.
Just to follow up on this, @radarhere I think you misinterpreted in your summary post, it's wasn't about requiring 32-bit support. It was about enabling pip to automatically discern 32-bit systems' should fall back on Pillow version 9, by packages adding metadata on supported platforms.
Anyways, the idea kind of sizzled out 🤷♂️, as stating supported platform(s) isn't feasible in practice. For example, perhaps win32 actually has zlib, so source build would've worked.
It's now been a month since the release of Pillow 10.0.0.
In the first week, we had some feedback here about the absence of 32-bit wheels here, and a comment in the release issue, but no new users have added feedback since.
If there is further feedback, we can reconsider 32-bit wheels, but for the moment, no users here have active questions about how to install Pillow, so I'm closing this.
Activity
nacerbaaziz commentedon Jul 2, 2023
the wheel of python 3.11 x32 is not exist
radarhere commentedon Jul 2, 2023
Hi. You will read in the release notes that it was a deliberate decision to not provide 32-bit wheels any longer.
#6941 (comment)
While we are no longer providing 32-bit wheels though, you can still build from source. See https://pillow.readthedocs.io/en/stable/installation.html#building-from-source
robgom commentedon Jul 3, 2023
The problem is that when installing pillow, newer version (10.x) with tar.gz is preferred over the older wheel.
And newer version can't be built on 32 bits, so several people could be affected by this.
radarhere commentedon Jul 3, 2023
You can select only versions of Pillow with a wheel when installing by using
python3 -m pip install Pillow --only-binary=:all:robgom commentedon Jul 3, 2023
Thank you, @radarhere , but that might be not scalable. The pillow package is rarely used directly, it is rather an indirect dependency. Other packages can be involved, for which tar.gz would be needed.
Just trying to chime in, providing arguments to consider providing wheels or not announcing 32 bit support in first place.
homm commentedon Jul 3, 2023
@robgom You don't need list Pillow directly to use
--only-binary=:all:optionrobgom commentedon Jul 3, 2023
@homm yes, I know. My point was that including this option could have bigger implications. That's what it'd have to look like:
Do those arguments make sense to you?
Again, I can follow your advice, just trying to suggest to solve the issue closer to its roots.
radarhere commentedon Jul 3, 2023
I don't understand the meaning of 'not announcing 32 bit support in first place'. Perhaps these words aren't quite correct, because this was announced.
If you just want to say that you're a 32-bit user, and wheels make your life easier, mission accomplished - I don't think we're trying to tell you that dropping 32-bit wheels has zero effect. If a flood of other people also chime in and say that they want 32-bit wheels, then those voices and your voice will make us reconsider this.
If you're concerned about packages that do not provide wheels, there is also
--prefer-binary- https://pip.pypa.io/en/stable/cli/pip_install/#cmdoption-prefer-binaryIn your example, you mention matplotlib. I realise you might say that was just an example, but matplotlib has actually also decided to drop 32-bit wheels moving forward.
matplotlib/matplotlib#25811 (comment)
robgom commentedon Jul 3, 2023
I'm sorry for selecting potentially not the best words.
You're right, the change was announced.
I was thinking from a technical perspective - the package somehow indicating in its data that it's not supporting 32 bits (in its metadata).
That way it wouldn't be picked up by pip in first place.
And users wanting to rebuild 32-bit version would potentially have an additional step to do it.
I'm not sure if and how it's doable, so probably stop at this point.
Provided my comments so far, because we've been affected by this change, and while I think I support it, I hope that the flow can be improved.
radarhere commentedon Jul 3, 2023
@baaziznasser do you have any further questions?
homm commentedon Jul 3, 2023
It’s not the case. Wheels are not provided, which doesn’t mean that you can’t install it at all.
There are could be a dozen of reasons why provided wheels does not suits you. It’s more correct to say that there is always only tiny intersection of factors (OS vendor, OS version, core libraries, platform, bitness) when you can find wheels. And of course Pillow provides a list of this intersections: it's a list of the wheels itself.
jamesbraza commentedon Jul 5, 2023
I am hitting this as well. See here for relevant discussion: pypa/setuptools#3746
radarhere commentedon Jul 5, 2023
For a summary of that other issue, the user suggests that setuptools allow packages to require 32-bit support.
That discussion has another offshoot in https://discuss.python.org/t/idea-enforcing-32-bit-vs-64-bit-support-in-setuptools/29040, where so far, a CPython core developer questions why this would be relevant to packages that still support 32-bit, but have merely stopped distributing 32-bit wheels (like we have).
[-]10.0.0 refused to build on windows with python 3.11 32 bit[/-][+]10.0.0 refused to build on Windows with 32-bit Python[/+]xqt commentedon Jul 6, 2023
We have the same issue with Python 3.8 and Python 3.10 on 32-bit system:
https://ci.appveyor.com/project/pywikibot-core/pywikibot/builds/47477816
radarhere commentedon Jul 6, 2023
@xqt we are no longer providing 32-bit wheels, so your code is trying to install Pillow from source. The error is telling you that you are missing a dependency. See https://pillow.readthedocs.io/en/stable/installation.html#building-from-source for instructions about how to build Pillow from source.
xqt commentedon Jul 6, 2023
@radarhere: Pillow is a requirement of the Pywikibot framework and we are running 32/64-bit tests on Appveyor. But CI tests are only one side. What is the solution for bot owners having Python 3.8+ on 32-bit? We could require Pillow < 10.0.0 for a while but this cannot be the way to go.
radarhere commentedon Jul 6, 2023
Do you mean that it is not just a matter of you installing Pillow, but also your users? They too could install Pillow from source. It would be the hope that because 32-bit use is fading, that this only affects a small portion of users. If you find a large number of users struggling with this, you can ask your users to come here and encourage us to restore 32-bit wheels.
#6941 (comment)
hugovk commentedon Jul 6, 2023
Using https://github.com/ofek/pypinfo to get downloads numbers for Pywikibot from PyPI over the last week, I only see a single download for 32-bit (armv7l, 0.06%), the other 1,732 are 64-bit (99.94%):
jamesbraza commentedon Jul 6, 2023
Just to follow up on this, @radarhere I think you misinterpreted in your summary post, it's wasn't about requiring 32-bit support. It was about enabling
pipto automatically discern 32-bit systems' should fall back onPillowversion 9, by packages adding metadata on supported platforms.Anyways, the idea kind of sizzled out 🤷♂️, as stating supported platform(s) isn't feasible in practice. For example, perhaps win32 actually has
zlib, so source build would've worked.nulano commentedon Jul 6, 2023
Worth noting that this is ARM, not x86, so the wheel would not have been compatible anyway.
radarhere commentedon Aug 1, 2023
It's now been a month since the release of Pillow 10.0.0.
In the first week, we had some feedback here about the absence of 32-bit wheels here, and a comment in the release issue, but no new users have added feedback since.
If there is further feedback, we can reconsider 32-bit wheels, but for the moment, no users here have active questions about how to install Pillow, so I'm closing this.
radarhere commentedon Dec 1, 2023
#7580 has been merged, so Windows 32-bit wheels should be available again when Pillow 10.2.0 is released on January 2.
radarhere commentedon Jan 2, 2024
Pillow 10.2.0 has been released with Windows 32-bit wheels.