On PyPy, binary wheels broken on pip==20.0.1
See original GitHub issueEnvironment
- pip version: 20.0.1
- Python version: PyPy (tested with 7.2.0 and 7.3.0)
- OS: tested on linux, likely affects other OS as well
Description If you try to install a manylinux wheel (such as the ones produced here), pip 20.0.1 complains:
xxx.whl is not a supported wheel on this platform.
pip==19.3.1
installs it correctly.
Expected behavior I would expect the wheel to be installed correctly 😃
How to Reproduce
First, download and install PyPy 7.2.0, and install pip==19.3.1:
$ wget -q https://bitbucket.org/pypy/pypy/downloads/pypy2.7-v7.2.0-linux64.tar.bz2
$ tar xf pypy2.7-v7.2.0-linux64.tar.bz2
homer pip-bug $ ./pypy2.7-v7.2.0-linux64/bin/pypy -m ensurepip
[...]
homer pip-bug $ ./pypy2.7-v7.2.0-linux64/bin/pypy -m pip install -U pip==19.3.1
[...]
Successfully installed pip-19.3.1
Then, download and install a manylinux wheel: it works correctly:
$ wget -q https://antocuni.github.io/pypy-wheels/manylinux2010/psutil/psutil-5.6.5-pp272-pypy_41-manylinux2010_x86_64.whl
$ ./pypy2.7-v7.2.0-linux64/bin/pypy -m pip install psutil-5.6.5-pp272-pypy_41-manylinux2010_x86_64.whl
[...]
Successfully installed psutil-5.6.5
Finally, upgrade to pip 20.0.1 and try again:
$ ./pypy2.7-v7.2.0-linux64/bin/pypy -m pip install -U pip==20.0.1
[...]
Successfully installed pip-20.0.1
$ ./pypy2.7-v7.2.0-linux64/bin/pypy -m pip install psutil-5.6.5-pp272-pypy_41-manylinux2010_x86_64.whl
[...]
ERROR: psutil-5.6.5-pp272-pypy_41-manylinux2010_x86_64.whl is not a supported wheel on this platform.
I tried it with PyPy 7.3.0 as well, same result.
More info
I tried to debug it a bit. I managed to reduce the difference to this snippet:
from pip._internal import pep425tags
from pip._internal.models.wheel import Wheel
print 'Supported tags'
tags = pep425tags.get_supported()
for tag in tags:
print ' ', tag
print
print 'File tags'
wheel = Wheel('psutil-5.6.5-pp272-pypy_41-manylinux2010_x86_64.whl')
for tag in wheel.file_tags:
print ' ', tag
With pip==20.0.1, I get this:
Supported tags
pp27-pypy_41-manylinux2014_x86_64
pp27-pypy_41-manylinux2010_x86_64
pp27-pypy_41-manylinux1_x86_64
pp27-pypy_41-linux_x86_64
[...]
File tags
pp272-pypy_41-manylinux2010_x86_64
Note that “supported tags” start with pp27-
, while “file tags” start with pp272-
, so Wheel.supported
returns False
.
Issue Analytics
- State:
- Created 4 years ago
- Reactions:20
- Comments:28 (19 by maintainers)
Top Results From Across the Web
Binary wheels for PyPy
Hi, this is a short blog post, just to announce the existence of this Github repository, which contains binary PyPy wheels for some...
Read more >Changelog - pip documentation v22.3.1
Deprecate `--no-binary disabling the wheel cache. ... Fix pip install --pre for packages with pre-release build dependencies defined both in pyproject.toml ...
Read more >pip Changelog - pyup.io
Deprecate --no-binary`` disabling the wheel cache. ... Fix ``pip install --pre`` for packages with pre-release build ... Upgrade pytoml to 0.1.21
Read more >Can pip list its binary wheels? - Stack Overflow
With the binary distribution installed ( pip install copyingmock ): $ pip show --files copyingmock Name: copyingmock Version: 0.1 Summary: A ...
Read more >python2-pip-20.0.2-6.12.1 RPM for noarch - RPMFind
The pip>=20 wheel cache is not retro-compatible with previous versions ... setuptools) * Update pyparsing to 2.3.1 * Update pytoml to 0.1.20 ...
Read more >Top Related Medium Post
No results found
Top Related StackOverflow Question
No results found
Troubleshoot Live Code
Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start FreeTop Related Reddit Thread
No results found
Top Related Hackernoon Post
No results found
Top Related Tweet
No results found
Top Related Dev.to Post
No results found
Top Related Hashnode Post
No results found
Top GitHub Comments
CMake installation via pip is broken with pip version >= 20 because of this issue.
I am not sure how prevalent it is, there are wheels like that for cmake that simply use pip as a platform and channel to distribute their manylinux binaries. These packages do not actually come with any Python or Python ABI requirements. Maybe it makes some sense to add new tags that makes the intention and requirements of these style of packages explicit.
@ncoghlan Are you still planning to look at this? The 20.1 release is due in April, and you mentioned above that there was potentially “a lot of work” here.
@antocuni If @ncoghlan doesn’t have time to work on this, the likely blocker is anyone having time to pick up the outstanding work here.